Reactjs 在Redux中将状态映射到道具

Reactjs 在Redux中将状态映射到道具,reactjs,ecmascript-6,Reactjs,Ecmascript 6,将映射的stateProps转换为constructorStates会是一种不好的做法吗 为了让我的问题更清楚,她举了一个例子: //some class constructor(props) { super(props); this.props.getMessages(1) this.state = { messages: this.props.messages }; } function mapStateToProps(stat

将映射的
stateProps
转换为
constructorStates
会是一种不好的做法吗

为了让我的问题更清楚,她举了一个例子:

//some class
  constructor(props) {
    super(props);
    this.props.getMessages(1)     
    this.state = {
      messages: this.props.messages
    };
  }

function mapStateToProps(state) {
  return {
    messages: state.messages
  };
}
在上面的示例中,我知道我可以使用
this.props.messages
raw样式,但我看到一些示例使props成为一种状态

我从代码笔得到的另一个例子:

  constructor(props) {
    super(props);
    this.state = {
      step: props.initialStep, 
      count: props.initialCount     
    };       
  }

Counter.propTypes = { initialCount: React.PropTypes.number };
Counter.defaultProps = { initialStep: 5, initialCount: 0 };

那么,当有些人试图将道具设置为一种状态时,将道具与状态区分开来有什么意义呢?

只有当您想将局部状态与全局状态分离时,才应该这样做

例如,如果正在制作表单,则不希望在存储更新时替换这些值


一般来说,不要将道具复制到状态。这是常见的bug来源。一个不太明显的错误是,组件装载时状态可能不存在,例如,如果您从http api获取它。

考虑Redux的一种方法是,它包含并管理整个应用程序的状态。你的组件应该仅仅反映这种状态,而不是直接改变它,这就是为什么你想把它变成你的道具。如果您的组件还需要维护一些额外的状态,那么您可以直接使用
state
,而不用担心通过Redux传递它