Reactjs React.js:道具更新后如何检查?
我有4个表单字段,用户可以在其中选择或输入值,以进入下一步。以下是其中一个字段:Reactjs React.js:道具更新后如何检查?,reactjs,redux,react-redux,Reactjs,Redux,React Redux,我有4个表单字段,用户可以在其中选择或输入值,以进入下一步。以下是其中一个字段: <Form.Field control={Checkbox} checked={this.props.donationCheckbox10} label='$10' value={10} onChange={() => { this.props.dispatchUpdateStateData('', 'donationInputField'); this.props.
<Form.Field
control={Checkbox}
checked={this.props.donationCheckbox10}
label='$10'
value={10}
onChange={() => {
this.props.dispatchUpdateStateData('', 'donationInputField');
this.props.dispatchUpdateStateData(!this.props.donationCheckbox10, 'donationCheckbox10');
this.clearTheOtherCheckboxes(10);
console.log(store.getState());
this.checkIfReadyToAdvance();
}}
/>
没有什么理由存储派生信息,除非该信息的计算是高性能的
isReadyToAdvance() {
const { props } = this;
return
props.donationCheckbox10 ||
props.donationCheckbox25 ||
props.donationCheckbox50 ||
props.donationInputField;
}
然后使用!this.isReadyToAdvance()
而不是this.state.canNotAdvance
从技术上讲,您也可以使用
组件willupdate
(已弃用)来更新您的状态或新状态。如果checkIfReadyToAdvance
计算派生状态,请不要在此处计算。你可以在每次重播时计算,你可以计算道具何时被更改,或者你可以在你的商店中计算。谢谢,你可以发布其中一个例子吗?如果你向我们展示一下checkIfReadyToAdvance
的实际功能,这会有所帮助。我会将该功能发布到原始帖子中。我是通过componentDidUpdate()实现的,我认为这是这里最好的选择。我很好奇如何在道具更改或商店中实现它,如果你能显示其中的任何一个。嗯,它是派生状态,我想知道你为什么要将它保存到状态?为什么不使用一个返回布尔值并调用它而不是访问状态的函数呢?
isReadyToAdvance() {
const { props } = this;
return
props.donationCheckbox10 ||
props.donationCheckbox25 ||
props.donationCheckbox50 ||
props.donationInputField;
}