我有一個叫做addContactForm
的redux-form。此表單通過插件監聽我應用程序中的某些操作。爲了進一步說明,請參閱下面的代碼:Redux-form:從狀態
/reducers/index.js
import { combineReducers } from 'redux';
import { reducer as reduxFormReducer } from 'redux-form'
import AddContactFormPlugin from './add-contact-form-plugin';
const rootReducer = combineReducers({
form: reduxFormReducer.plugin({
addContactForm: AddContactFormPlugin
})
});
export default rootReducer;
/reducers/add-contact-form-plugin.js
import { SET_CURRENT_CONTACT, CLEAR_CURRENT_CONTACT } from '../constants';
export default function (state, {type, payload}) {
switch (type) {
case SET_CURRENT_CONTACT:
// !!! MY PROBLEM IS ON THE NEXT LINE
return {...state, values: { ...payload }};
case CLEAR_CURRENT_CONTACT:
return {...state, values: getEmptyValues()};
default:
return state;
}
}
function getEmptyValues() {
return {
firstName: '',
lastName: '',
phone: ''
}
}
澄清這裏發生了什麼:當類型SET_CURRENT_CONTACT行動流入該減速機,我設置表單值發送給用戶選擇的聯繫人。這部分工作正常。
然而,形式現在被標記爲!質樸& &髒。因此,我的提交按鈕沒有被禁用,實際上它應該是直到用戶決定做出任何更改。
所以我的問題是:我怎麼可以更新的形式狀態,使得它被標記爲原始的?
(或無效我猜,但像一個更好的選擇,質樸的感覺)
我試圖簡單地設置在該州的對象的價值,但這個沒有做任何事情:如果我使用 return {...state, values: { ...payload }, pristine: true };
在這裏錯誤的做法,我也希望被指出正確的方向。
感謝張貼您的這個解決方案。 – cantera