我在使用 Redux 更新状态时遇到了一些问题。我正在使用 redux-form 提交一些值,我的 action/reducer 可以很好地工作。但是我的更新操作/减速器在表单提交后没有改变状态,我得到了相同的状态返回。这是我的 ReduxDevTools 的屏幕截图:
因此,当提交表单时,我可以看到 addMovementForm 的值部分中更新了新值 (movementWeight: '200')。但是当我的 UPDATE_MOVEMENT 操作被调用时,我仍然取回了我的原始值(movementWeight: '100')。我知道我做错了什么,但我不知道是什么。
这是我的操作:
export const updateMovement = (id, formValues) => async dispatch => {
const response = await movements.patch(`/movements/${id}`, formValues);
const updateId = response.data.id;
dispatch({ type: constants.UPDATE_MOVEMENT, payload: { data: response.data, id: updateId } });
我的减速器:
const initialState = [];
const movementReducer = (state = initialState, action) => {
switch (action.type) {
case CREATE_MOVEMENT:
return [
...state, action.payload
];
case UPDATE_MOVEMENT:
return [ ...state.map(item => item.id === action.payload.id ? {...item, ...action.payload.data} : item)]