将状态映射到Redux中的props

时间:2017-04-13 20:55:52

标签: reactjs ecmascript-6

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原始样式,但我看到一些使道具成为状态的示例。

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

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

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

那么当你有人试图将道具变为国家时,将道具区分为州的意义何在?

2 个答案:

答案 0 :(得分:2)

只有在想要将本地状态与全局状态分离时才应执行此操作。

例如,如果您正在制作表单,则不希望在商店更新时替换这些值。

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

答案 1 :(得分:0)

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