我使用isDirty
检查表单值是否已输入(并根据该表单禁用其他内容)。
import { isDirty } from 'redux-form';
const mapStateToProps = state => ({
isFormDirty: isDirty('myform')(state)
});
这很好用,因为在我想要禁用的按钮被禁用时更改表单值。当我发送reset
redux-form动作创建者时,它们也会启用。
但是,成功提交表单并不能清除脏状态。我通过isDirty
检查禁用的按钮仍处于禁用状态。
我是否需要手动告诉redux-form表单现在是原始的?怎么做?
答案 0 :(得分:1)
我现在解决了这个问题,方法是将我的动作创建者的initialize
操作作为onSubmit
传递给表单。
import { getFormInitialValues, initialize } from 'redux-form';
export function saveData(data) {
return (dispatch, getState) => { // this is redux-thunk
api.saveSomething(data).then(newData => {
// dispatch some actions
dispatch(someAction(newData));
let activeFormValues = getFormInitialValues('myform')(getState());
if (activeFormValues.id === data.id) { // Reset the form with new initialValues
dispatch(initialize('myform', newData, false, { keepSubmitSucceeded: true }));
}
});
};
}