omi*_*d.n 2 redux-form admin-on-rest
我在admin-on-rest的应用程序中有一个Edit组件,它在内部使用ReduxForm,代码如下所示:
<Edit {...props} >
<CustomField />
<TextInput source="title" />
</Edit>
Run Code Online (Sandbox Code Playgroud)
我想知道它是如何可能改变title从CustomField没有坚持它的服务器上?
您可以使用自定义传奇来实现此目的并change从中调度事件redux-form.这听起来有点复杂,但事实并非如此.:)
首先,为您的应用程序实现自定义传奇:
const customSagas = [
MyCustomEntitySagas,
];
const App = () => (
<Admin customSagas={customSagas}>
// ...
</Admin>
);
Run Code Online (Sandbox Code Playgroud)
然后,在您的自定义传奇中,只需观看您将从您发出的动作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),
];
}
Run Code Online (Sandbox Code Playgroud)
例如,以下是您可能要发送的动作创建者:
export const CUSTOM_FIELD_CHANGE = 'CUSTOM_FIELD_CHANGE';
export const customFieldChange = (newTitle) => ({
type: CUSTOM_FIELD_CHANGE,
payload: { newTitle },
});
Run Code Online (Sandbox Code Playgroud)
这里的关键是Redux Sagas.看起来像很多样板,但它确实简化了最终的开发.
我试图尽可能地缩短以防止太多噪音.但随时可以询问您是否需要更多信息.:)
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |