2017-08-31 35 views
0

技術:使用react,Redux,Redux窗體(FieldsArray),MongoDB。
我有實體的名單,我要做到以下幾點:Redux窗體 - 創建操作的同步窗體

我想創建一個實體 - >從服務器獲取回一個實體_id - 與當時的實體和_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
+0

我不確定你的意思,只需將它更新回正確位置的表單值即可。您是否想要將某個實體ID存儲在某個特定表單的某個位置的redux表單中? –

+0

感謝您的回答 - 編輯此問題以使其更加清晰 – chenop

回答

0

如果您正在尋找將其存儲在終極版型的狀態,有可用的幾個選項。你可以看看使用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中創建自己的狀態對象。