为了账号安全,请及时绑定邮箱和手机立即绑定

Redux Reducer 状态未正确更新

Redux Reducer 状态未正确更新

猛跑小猪 2023-12-14 16:39:09
在我的反应应用程序中,我有两个组件(个人项目列表和随机项目列表)。在我的随机项目列表组件中,我可以单击该项目并将其添加到我的个人项目列表组件中。但是,当我这样做时,它会将我的个人项目状态中的其他项目替换为我刚刚添加的新项目。我只是想添加到我的个人物品列表中。//Update Items Listexport const updateItemsList = (data) => ({  type   : UPDATE_ITEMS_LIST,  payload: data});//Items List Reducerconst initialState = {  items: [],  loading: false};export default function(state = initialState, action){  switch(action.type){    case UPDATE_ITEMS_LIST:      return{        ...state,        items: action.payload,        loading: false      };    default:      return state;  }}//Select Item To Addexport const addItemToList = (itemId) => (dispatch, getState) =>{  const config = {    headers:{      "Content-Type": "application/json"    }  };  axios.post(`/api/items/addItem/${itemId}`, {}, config)    .then(res => {      dispatch({      type: ADD_ITEM_SUCCESS,      payload: res.data    })   dispatch(updateItemsList(res.data, ...getState().itemsList.items));  })    .catch(err =>{      dispatch({type: ADD_ITEM_ERROR}));    });};
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

假设res.data是您刚刚添加的新项目,当您调度 updateItemList 时,我认为您错过了数组的方括号。所以你只需发送res.data有效负载。应该是这样的

updateItemsList([res.data, ...getState().itemsList.items])


查看完整回答
反对 回复 2023-12-14
  • 1 回答
  • 0 关注
  • 46 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信