为什么我的状态在组件中似乎没有更新?

时间:2019-05-08 13:46:55

标签: javascript reactjs redux

我是Redux的新手,尽管我之前已经在React上做过一些工作。

我正在使用tutorial来测试应用程序中的动作,动作创建者和减速器,到目前为止,我认为我已经完成了90%的工作。

  componentDidMount() {
    this.props.levelUp();
    this.props.levelUp();
    this.props.levelUp();
    this.props.levelUp();
    this.props.levelUp();
    console.log("final prop");
    console.log(this.props);
  }

const mapStateToProps = (state) => {
  console.log("state general");
  console.log(state.general);
  return {
    general: state.general,
  };
};

这两个控制台日志都在此处触发,并且它们随着每次上级操作的增加而增加或随着每个下级操作的减少而减小。

function mapDispatchToProps(dispatch) {
  return bindActionCreators(generalActions, dispatch);
}

这在我的减速器文件中:

export default (state = 1, action) => {
  console.log(state);
    switch (action.type) {
      case 'LEVEL_UP':
      console.log(action.type);
        return state + 1;
      case 'LEVEL_DOWN':
          return state - 1;
    }
    return state;
  };

我的控制台日志似乎在捕获正确的增量-每次调用this.props.levelUp()时,reducer中的值都会增加一个。

但是,当我在componentDidMount()中对道具进行最终记录时,该值为1。

这是为什么?我不是永久保存数据吗?还有其他原因导致我不按照我的设想返回状态吗?

1 个答案:

答案 0 :(得分:1)

componentDidMount将在组件安装后一次被触发。之后,您的操作被解雇,因此为什么要在console.log()componentDidUpdate()之类的内容中执行static getDerivedStateFromProps()语句。

有关响应生命周期的更多信息:https://reactjs.org/docs/state-and-lifecycle.html

问候