javascript - 在 React 和 Redux 中更新 props 而不留下函数

标签 javascript reactjs redux react-redux

我有简单的检查,当用户单击按钮时我必须执行此操作:

<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/

相关文章:

javascript - Ajax 无法在 Codeigniter 3 中工作

javascript - 通过cloneElement reactjs传递forwardRef

javascript - 所有样式组件返回任何 (@types/styled-components)

javascript - 如何在 Redux 中向数组添加项目?

javascript - 从 .map() 方法内的调度函数返回 promise

javascript - 更改其他 div 的位置后将 div 推到顶部

javascript - Javascript 中的简单 BPM 或工作流程

javascript - 将 AWS Chime 集成到 Java 应用程序中

javascript - 如何使用浅层渲染测试装饰后的 React 组件

reactjs - 如何在 ReactJS 组件单元测试中获取 'mock' 状态值?