Forms 如何为redux表单中的所有表单提供插件?
好的,我想在我的注册表表单中处理输入开头的空白,我通过提供redux form reducer的插件实现了这一点:Forms 如何为redux表单中的所有表单提供插件?,forms,reactjs,redux,redux-form,Forms,Reactjs,Redux,Redux Form,好的,我想在我的注册表表单中处理输入开头的空白,我通过提供redux form reducer的插件实现了这一点: export default function(cookies, server) { return combineReducers({ auth: auth(cookies, server), reduxAsyncConnect, alert, programs, exercises, routing: routerReducer
export default function(cookies, server) {
return combineReducers({
auth: auth(cookies, server),
reduxAsyncConnect,
alert,
programs,
exercises,
routing: routerReducer,
form: form.plugin(formPlugin),
profile,
spinner,
companies
});
}
插件是:
import {ltrim} from './ltrim';
const formPlugin = {
registerForm: (state, action) => {
switch(action.type) {
case '@@redux-form/CHANGE':
if (action.meta.form === 'registerForm') {
return {
...state,
values: {
...state.values,
[action.meta.field]: ltrim(action.payload)
}
}
} else {
return state;
}
default:
return state;
}
}
}
export default formPlugin;
如果没有硬编码,如何在所有表单上获得相同的效果?也许我必须以某种方式编辑redux表单更改操作来实现这一点?您可以创建一个自定义的
字段
组件来实现这一点
import { Field } from 'redux-form';
import {ltrim} from './ltrim';
const normalize = value => ltrim(value);
const TrimmedField = props => <Field {...props} normalize={normalize} />;
从'redux form'导入{Field};
从“/ltrim”导入{ltrim};
常量normalize=value=>ltrim(值);
常量TrimmedField=props=>;
如果在某些情况下需要执行其他规范化,还可以为自定义的normalize
提供回调参数