2016-03-13 47 views
3

这个问题是关于在哪里把表单元素验证在redux中。我feeeeel好像我应该有一个onValueChange事件调度一个动作到reducer验证和更新值(无效或有效,因为它可能),以及“isValid”属性的状态,使该元素可以显示一个错误。相反,我可以在操作中进行验证,如果它失败,则仅派发失败操作。redux在redux验证

一个注意事项是,我更喜欢匿名函数命名来扩展react.component。

我想我应该改变这个名称,以便将验证放在redux流中的适当位置。

+0

我会说“这取决于”。我更喜欢在它所关注的组件的事件处理程序中处理实际验证,暂时忘记Redux,并根据结果分派适当的操作。我觉得在你真正改变应用程序的状态之前,减速器不应该被牵扯进来。 – dannyjolie

+0

或者你可以在你的组件中进行验证。中间状态不属于Redux imo。提交有效表单后,将该状态保存在Redux中。 –

回答

2

保持组件中的验证。我听到很多“保持所有状态在减少”,但我试图只保留我绝对需要在减少。使用具有错误属性的组件状态,并且如果您的验证失败,则在错误属性上设置状态。还有,还原形式:http://redux-form.com/4.2.0/#/?_k=mhjui4是简单和复杂表单的一个很好的库。

+0

嘿,不想让你挂断,当我再来一次工作时,我会接受你的回答或更新我的发现。不要你认为我放弃了它。 – Raif

+0

对,我猜这是前一阵子,但我得出了同样的结论,即存在适合于redux和其他状态的组件和状态的状态。所以我去组件控制它自己的状态,直到它提交。 – Raif

-1

如果您不允许“拒绝”更新并触发不同的操作,您如何将任何商业逻辑放入reducer中? 如果设计人员允许减速器返回一个动作,例如,您可以在存储器中存储相同类型的其他对象时验证表单数据,同时它们可以随时使用(例如,以确保添加的用户的电子邮件是唯一的),然后执行更改(或不执行)并触发清除表单的操作或报告重复电子邮件的操作。但是这对React来说太合理了。