Redux表单 - 使用创建操作同步表单

时间:2017-08-31 06:57:54

标签: reactjs redux redux-form

技术:使用react,Redux,Redux Form(FieldsArray),MongoDB 我有一个实体列表,我想做以下事情:

我想创建一个实体 - >从服务器返回一个带有_id的实体 - >使用then实体和_id更新商店。

我该怎么做?

actions.js

export function createEntity(entity) {
    return function (dispatch) {
        dispatch(createEntityStart());
        return axios.post(
            'http://localhost:3000/api/users',
            entity,
        )
        .then(function (response) {
            dispatch(createEntitySuccess(response.entityWithId));
        }).catch(function (response) {
            dispatch(createEntityError(response.data));
        });
    };
}

我已经完成了fields.push({}) - 在组件中有了一个新实体。 现在我想发布跟随返回实体(带有id)的新实体。 我现在需要在商店的某个地方用Id保存实体 该怎么做?
我进了商店:

  • 形式
    • MyFormName

      • 初始
      • registeredFields

1 个答案:

答案 0 :(得分:0)

如果您希望将其存储在redux-form的状态,可以使用几个选项。你可以看一下使用redux-form的Action Creators来操纵它的状态。或者你可以在它的表单缩减器中添加一个插件(这是一个超级简化的例子):

const reducers = {
  form: formReducer.plugin({
    entityForm: (state, action) => { 
      switch(action.type) {
        case CREATE_ENTITY:
          return {
            ...state,
            values: {
              action.payload
            },
            registeredFields: {
              ...state.registeredFields,
            }
          }
        default:
          return state
      }
    }
  })
}

您可以在http://redux-form.com/7.0.3/docs/api/ReducerPlugin.md/

找到有关redux-form插件的更多详细信息

另一个选项,如果你不想以redux-form的状态保存它,就是在redux中创建你自己的状态对象来存储实体信息。