我有简单的检查,当用户单击按钮时我必须执行此操作:
<button
onClick={() => {
this.props.validatingActions.validate(this.props.Email.Value);
this.props.submittingActions.submitValidation(this.props.Email.IsValid);
}}>Submit</button>
首先,Redux 商店中的电子邮件会进行验证,然后,无论电子邮件是否有效,都会执行一些操作。
问题是,this.props在执行this.props.validatingActionsvalidate
后不会更新,它们只会在离开匿名onClick<后更新
函数,因此 this.props.Email.IsValid
具有旧值。
在这种情况下如何正确更新 props?
最佳答案
请注意,您不应该(并且在大多数情况下不能)更改组件自己的属性。 请检查此SO answer了解更多详情。
答案更新
另请注意,React setState
是异步的,因此在调用 setState
后不会立即进行状态更改。因此,基于状态的 props 在分派(dispatch)操作后也不会立即更新。
当更新 prop 时,组件会重新渲染,如果您需要立即更改 prop 值,我认为组件渲染函数中不需要它,但在其他地方可以决定是否执行另一个操作。如果是这样,应该在操作中处理:您可以使用 redux-thunk分派(dispatch)异步或条件操作。
关于javascript - 在 React 和 Redux 中更新 props 而不留下函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42391926/