我有一個admin-on-rest的應用程序,它內部使用ReduxForm並且代碼看起來像這樣的編輯組件的整個記錄值:影響從的CustomField在管理上休息
<Edit {...props} >
<CustomField />
<TextInput source="title" />
</Edit>
我想知道如何是否有可能從CustomField
更改title
而不將其保留在服務器上?
我有一個admin-on-rest的應用程序,它內部使用ReduxForm並且代碼看起來像這樣的編輯組件的整個記錄值:影響從的CustomField在管理上休息
<Edit {...props} >
<CustomField />
<TextInput source="title" />
</Edit>
我想知道如何是否有可能從CustomField
更改title
而不將其保留在服務器上?
您可以使用自定義傳奇並從redux-form
派發change
事件來實現此目的。這聽起來有點複雜,但事實並非如此。 :)
首先,實現自定義的傳奇給你的應用程序:
const customSagas = [
MyCustomEntitySagas,
];
const App =() => (
<Admin customSagas={customSagas}>
// ...
</Admin>
);
然後,在自定義的傳奇,只是看你會從你的CustomField
發出一個動作,是這樣的:
import { change } from 'redux-form';
import { put, takeEvery } from 'redux-saga/effects';
import { CUSTOM_FIELD_CHANGE } from './actions';
export function* watchForCustomFieldChange({ payload }) {
yield put(change('form-record', 'title', payload.newTitle));
}
export default function* root() {
yield [
takeEvery(CUSTOM_FIELD_CHANGE, watchForCustomFieldChange),
];
}
例如,以下是您可能想要發送的動作創建者:
export const CUSTOM_FIELD_CHANGE = 'CUSTOM_FIELD_CHANGE';
export const customFieldChange = (newTitle) => ({
type: CUSTOM_FIELD_CHANGE,
payload: { newTitle },
});
這裏的關鍵是Redux Sagas。看起來像很多樣板,但它確實簡化了最終的發展。
我試圖儘可能短,以防止過多的噪音。但隨時問問你是否需要更多信息。 :)
感謝您耐心等待這樣一個信息豐富的答案。這可能是一個天真的問題,但我仍然很難找到對調度功能的引用。 –
沒問題。它來自Redux:http://redux.js.org/docs/api/Store.html#dispatch –
@JonathanPetitcolas如果您可以添加轉換部分,我將非常感激。我是React Redux中的新成員,訪問商店時遇到問題。 –
我不確定要完全理解你的意思。你想從你的'CustomField'中更新表單的'title'字段,不是嗎? –
是的,那正是我需要做的。 –