我在admin-on-rest中有一个编辑组件的应用程序内部使用 ReduxForm代码如下所示:
<Edit {...props} >
<CustomField />
<TextInput source="title" />
</Edit>
我想知道如何从 CustomField
更改 title
而不将其保留在服务器上?
最佳答案
您可以使用自定义传奇并从 redux-form
分派(dispatch) 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),
];
}
例如,以下是您可能想要分派(dispatch)的操作创建者:
export const CUSTOM_FIELD_CHANGE = 'CUSTOM_FIELD_CHANGE';
export const customFieldChange = (newTitle) => ({
type: CUSTOM_FIELD_CHANGE,
payload: { newTitle },
});
这里的关键是 Redux Sagas 。看起来像很多样板文件,但它确实简化了 Final 的开发。
我尝试尽可能短以防止太多噪音。但如果您需要更多信息,请随时询问。 :)
关于redux-form - 影响 admin-on-rest 中 CustomField 的整个记录值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42861125/