mapStateToProps在操作调度后未在组件中反映



我有一个减速器,看起来像这样:

export default function reducer(state={
fetching: false,
}, action) {
switch (action.type) {
case 'LOGIN_REQUEST': {
return {...state, fetching: true}
}
...
return state

我从组件向它发送操作,在组件中我有:

const mapStateToProps = (state) => {
return state
}

我的问题是:
1。在mapStateToProps状态中包含login.fetching: true
2。在向减速器调度动作后的组件中,this.props.login.fetching包含false
3.在组件render()中,方法this.props.login.fetchingtrue

为什么在2的情况下。它仍然是false,有可能吗?我在这里缺少什么?

行动调度:

onLoginPress = () => {
this.props.dispatch(loginUser(this.state.email.trim(), this.state.password.trim()))
console.log(this.props);

答案非常简单,因为Javascript的async nature,在dispatch操作之后立即获得false,因此即使在修改props之前,也会调用console.log(this.props),因此它会显示以前的值。但是,当您从reducer更改状态时,会调用render()函数,因此它会显示更新后的值。

你需要的是调度上的Promise

使用此

onLoginPress = () => {
this.props.dispatch(loginUser(this.state.email.trim(), this.state.password.trim())).then(() => {
console.log(this.props);
})

我希望,我能够恰当地解释它。

相关内容

  • 没有找到相关文章

最新更新