React Redux <input> onChange更新值问题

时间:2019-09-18 03:38:04

标签: javascript reactjs react-redux

哪个是更好的选择或最佳实践?

<input onChange={() => dispatch(/* some action (/)} />

<input onChange={() => this.setState({ value: newValue })} />

,然后在成功提交表单后更新redux存储中的值。

3 个答案:

答案 0 :(得分:2)

我认为这完全取决于您的要求。

这两种方法都有自己的优点。

请考虑以下场景:如果用户不小心刷新页面或页面以其他任何方式刷新,则希望表单数据为persist。在这种情况下,您可以使用以下方法直接将值存储在redux状态:

<input onChange={() => dispatch(/* some action (/)} />

这样做,您的redux存储就是事实的唯一来源。而且您不需要在组件中维护单独的状态。您的组件将是纯组件。

另一种情况是,您不必担心要保留的数据,而只希望将数据存储在redux存储中一次。在这种情况下,您可以选择第二种方法,即

<input onChange={() => this.setState({ value: newValue })} />

这样做,您将拥有维护本地状态并稍后再更新到Redux存储的额外开销。

您可以根据需要选择任何选项。

答案 1 :(得分:0)

如果您使用的是Redux表单,则不必执行此操作,因为Redux表单会自动将更改保存在商店中(并非主要是),因此,当您使用Redux表单时,需要使用onClick并使用例如,其中的帮助者

<button
onClick={()=>
 this.clickhandlerhelper() }> 
 click here </button>

在您的助手中,就像这样

 Clickhandlerhelper(formvalues){
 This.props.myactionsave(formvalues)}   

然后在您的助手中,您可以保存数据或所需的任何内容 希望它对您有用,您就会明白

答案 2 :(得分:0)

这是一种更好的方法。

awk '{tmp=$0;gsub($2,"")} NF==1{print tmp}' file