动作调度后,mapStateToProps不会反映在组件中

时间:2017-02-09 13:45:45

标签: reactjs react-native redux react-redux

我有一个看起来像这样的减速机:

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

我从compoenent和我发布的组件中发送动作:

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);

1 个答案:

答案 0 :(得分:2)

答案非常简单,由于false的Javascript,您在dispatch行动后立即获得async nature,因此即使在props修改您的{console.log(this.props)之前{1}}被调用,因此它显示以前的值。但是,当您从reducer更改中声明render()函数时会调用它,因此它会显示更新的值。

您需要的是Promise发送

使用此

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

我希望,我能够正确解释它。