我需要在页面加载后进行调度和更改表单数据:
dispatch(change("project", field, value));
然而,这会将“原始”变为虚假而“脏”变为真,任何人都有这种情况的良好解决方案吗?
答案 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