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传递它