将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 };
那么当你有人试图将道具变为国家时,将道具区分为州的意义何在?
答案 0 :(得分:2)
只有在想要将本地状态与全局状态分离时才应执行此操作。
例如,如果您正在制作表单,则不希望在商店更新时替换这些值。
一般情况下,不要将道具复制到州。这是bug的常见来源。一个不太明显的错误是在组件安装时状态可能不存在,例如,如果你从http api中获取它。
答案 1 :(得分:0)
考虑Redux的一种方法是,它包含并管理整个应用程序的状态。你的组件应该仅仅反映这种状态,而不是直接改变它,这就是为什么你想把它变成你的道具。如果你的组件需要保持一些额外的状态,那么你可以直接使用state
,而不用担心将它传递给Redux。