我有简单的检查,当用户点击按钮时,我必须这样做:
<button
onClick={() => {
this.props.validatingActions.validate(this.props.Email.Value);
this.props.submittingActions.submitValidation(this.props.Email.IsValid);
}}>Submit</button>
首先,Redux商店中的电子邮件验证电子邮件是否有效,然后,某些操作验证电子邮件是否有效。
问题是,这一点。执行此操作后,道具不会更新。道具。validatingActionsvalidate
,它们只是在离开anonymousonClick
函数后的更新,因此。道具。电子邮件IsValid
具有旧值。
在这种情况下,如何正确更新道具?
换道具不是解决问题的方法。你验证和提交的逻辑在哪里?直接在减速机里?要么在同一个动作上做这两件事,要么使用副作用库一个接一个地做。无论如何,从动作的名称来看,我不明白你为什么要为此使用redux动作。对我来说,验证输入听起来不像是状态更改。您应该用一个简单的函数验证它,并根据它是否正常,相应地操作(用一个操作)。
尝试使用Redux表单http://redux-form.com/6.5.0/examples/syncValidation/,当您要使用表单时
请注意,您不应该(在大多数情况下也不能)更改组件自己的道具。有关更多详细信息,请查看此SO答案。
另外,请注意ReactsetState
是异步的,因此在调用setState
后不会立即进行状态更改。因此,基于状态的道具也不会在发送动作后立即更新。
当道具被更新时,组件将被重新渲染,如果您需要立即更改道具值,我假设在组件渲染功能中不需要它,而是在其他地方决定是否执行另一个操作。如果是这样,它应该在操作中处理:您可以使用redux thunk来调度异步或条件操作。
Button.js部分 我的问题是组件的道具似乎没有随redux商店更新。在onClick函数运行后,redux存储更新为正确的值,mapStateToProps也会以正确的状态运行,如果我尝试从prop记录状态,则仍然会获得旧值。如果我在返回JSX之前在render函数中执行相同的日志,那么我会从props中获得正确的状态,我无法理解为什么在redux存储被删除后它不会立即更新。因此,如果我将代
问题内容: 我在使用React表单和正确管理状态时遇到麻烦。我有一个形式为模式的时间输入字段。初始值在中设置为状态变量,并从父组件传递。这本身工作正常。 当我想通过父组件更新默认的start_time值时,就会出现问题。更新本身通过发生在父组件中。但是在我的表单中,默认的start_time值从不更改,因为它仅在中定义一次。 我尝试过通过强制进行状态更改,该更改确实有效,但给了我错误。 所以我的问
问题内容: 在此请忍受,因为这个问题与我使用React,Redux或react- redux的第一个测试应用有关。Docs使我步入正轨,并且我有一个可以正常工作的模拟银行应用程序。我的状态对象大致如下所示: 我只有两个动作: 1. CHANGE_HASH(如网址哈希中所示)。此操作始终按预期工作,而reducer所做的只是更新state.activePageId(是的,我正在克隆状态对象而不是对其
示例代码:https://github.com/d6u/example-redux-update-nested-props/blob/master/one-connect/index.js 查看现场演示:http://d6u.github.io/example-redux-update-nested-props/one-connect.html 我有上面的组件,回购和重新整理。我想更新第一个rep
我正在制作一个paginate组件,我在传递给这个paginate组件的道具上遇到了问题。元素道具正在自动更新,所以我不能使用componentWillReceiveProps来更新我的组件。 下面是我的父组件呈现和对Paginate组件的回调: 下面是我的分页组件: 代码在post advisions之后更新,但是:componentWillReceiveProps(nextProps){con
我正在做一个React-Native项目,我意识到React-Native似乎打破了React-flow(父到子)道具更新。 基本上,我是从“应用程序”组件调用“菜单”组件,将一个道具传递给“菜单”。然而,当我更新“应用程序”状态时,“菜单”上的道具应该更新,但这不会发生。我做错什么了吗? 这是我的密码: 一个pp.js 菜单js