Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 如何为redux表单中的所有表单提供插件?_Forms_Reactjs_Redux_Redux Form - Fatal编程技术网

Forms 如何为redux表单中的所有表单提供插件?

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

好的,我想在我的注册表表单中处理输入开头的空白,我通过提供redux form reducer的插件实现了这一点:

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
提供回调参数