React redux表单在更改后更新原始状态

时间:2017-10-16 08:58:59

标签: javascript reactjs react-redux redux-form react-redux-form

我需要在页面加载后进行调度和更改表单数据:

dispatch(change("project", field, value));

然而,这会将“原始”变为虚假而“脏”变为真,任何人都有这种情况的良好解决方案吗?

3 个答案:

答案 0 :(得分:1)

为了实现这一目标,您可以使用reduxForm组件提供initialValues

compose(
  connect((state) => ({
    initialValues: state.someData
  })),
  reduxForm({
    form: 'someForm'
  })
)(Component)

或者,您可以在从服务器加载数据后使用initialize中的redux-form操作创建者:

dispatch(initialize('myForm', newInitialValues));

调度initialize操作会将您的表单状态设置为pristine

答案 1 :(得分:0)

我不知道这是否正确,但是对我有用。

this.props.dispatch({type: '@@redux-form/BLUR', payload: yourPayload, meta: {form: "formName", field: "formField", touch: true}});

我在字段的onChange事件上调度了上面的代码,迫使redux表单更新原始状态。

答案 2 :(得分:-1)

您可以将silent标志设置为true,这不会更新pristine和dirty标志。 示例:actions.change(model, value, { silent: true }) 您也可以使用actions.load()load()change()

之间的差异
  

这与调用actions.change(model,value,{silent:true})不同。两者都相似,只有一个主要区别:actions.load也会更新.loadedValue,而静默更改则不会./ / p>

https://davidkpiano.github.io/react-redux-form/docs/api/actions.html#actions-load