2017-03-05 17 views
1

私はisDirtyを使用して、フォーム値が入力されているかどうかをチェックします(それに基づいて他のものを無効にします)。redux-form isDirtyがサブミットに成功した後にリセットされない

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

フォームの値を変更したときに無効にするボタンのように、この機能は素晴らしいです。私はreset redux-formアクションクリエーターをディスパッチすると有効になります。

ただし、フォームを正常に送信しても汚れた状態はクリアされません。 isDirtyチェックで無効にしたボタンは無効のままです。

私はredux-formに手作業でフォームが初期状態であると伝える必要がありますか?それをどうやってやるの?

答えて

0

これは、onSubmitというフォームに渡されたアクション作成者のinitializeアクションをディスパッチすることで解決しました。

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 })); 
     } 
    }); 
    }; 
} 
関連する問題