使用带有动态生成的表单名称的redux-form reducer.plugin()

时间:2017-12-19 16:39:36

标签: redux-form

我在我的应用程序中使用的很多表单都是动态生成的,因此在插件缩减器中我不知道表单的名称,但是想要使用reducer插件的好处。

在下面的情况下它工作正常,如果我知道我的表单被称为foo但在我的应用程序中我有多个动态命名的表单,如CalcForm1,CalcForm2 .... CalcFormN等,这些都需要“CALCULATE”的功能action.type

为什么我可以将它用于动态命名的表单。

非常感谢

export const formPlugin = {
  foo: (state = {}, action) => { // <----- 'foo' is name of form given to     reduxForm()
    switch (action.type) {
      case "CALCULATE":
        return {
          ...state,
          values: doCalculate(action.payload.expressions, state.values)
        };

      default:
        return state;
    }
  }
};

1 个答案:

答案 0 :(得分:0)

你可以编写wrap函数并使用action.meta.form

类似

const formHack = (state, action) => {
   return (action.meta && action.meta.form) ? 
       formReducer.plugin({
         [action.meta.form]: {...}
       })(state, action) : formReducer(state, action)
}