【问题标题】:redux-form isDirty not reset after successful submit成功提交后redux-form isDirty未重置
【发布时间】:2017-07-25 12:53:04
【问题描述】:

我正在使用isDirty 检查表单值是否已输入(并基于此禁用其他操作)。

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

这在我想要禁用的按钮中效果很好,当表单值更改时被禁用。当我调度 resetredux-form 动作创建者时,它们也会启用。

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

我需要手动告诉 redux-form 表单现在是原始的吗?以及如何做到这一点?

【问题讨论】:

    标签: reactjs redux-form


    【解决方案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 }));
          }
        });
      };
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多