2017-05-24 8 views
0

[OK]をので、私は私の登録フォームに入力の先頭に空白に対処したいと私はReduxの形式の減速のためのプラグインを提供することによって、これを達成した:redux形式のすべてのフォームにプラグインを提供するにはどうすればいいですか?

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形式のCHANGEアクションを編集する必要がありますか?

答えて

1

これを行うカスタムFieldコンポーネントを作成することができます。あなたには、いくつかのケースでは、他の正規化を行う必要がある場合

import { Field } from 'redux-form'; 
import {ltrim} from './ltrim'; 

const normalize = value => ltrim(value); 

const TrimmedField = props => <Field {...props} normalize={normalize} />; 

また、カスタムnormalizeにコールバック引数を与えることができます。

http://redux-form.com/6.6.3/docs/api/Field.md/#-normalize-value-previousvalue-allvalues-previousallvalues-nextvalue-optional-

関連する問題