成功提交后,redux-form isDirty不会重置

时间:2017-03-05 18:33:01

标签: reactjs redux-form

我使用isDirty检查表单值是否已输入(并根据该表单禁用其他内容)。

import { isDirty } from 'redux-form';
const mapStateToProps = state => ({
  isFormDirty: isDirty('myform')(state)
});

这很好用,因为在我想要禁用的按钮被禁用时更改表单值。当我发送reset redux-form动作创建者时,它们也会启用。

但是,成功提交表单并不能清除脏状态。我通过isDirty检查禁用的按钮仍处于禁用状态。

我是否需要手动告诉redux-form表单现在是原始的?怎么做?

1 个答案:

答案 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 }));
      }
    });
  };
}