亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號