2 回答

TA貢獻1876條經驗 獲得超7個贊
使用高度嵌套的對象更改狀態可能很困難,但在這種情況map下filter函數確實很有幫助
const item_index = state.items.findIndex((url) => url.url_id === action.payload.url_id);
const json_index = state.items[item_index].jsons.findIndex((json) => json.json_id === action.payload.json_id);
return {
...state,
items: state.items.map((item, index) => (index === item_index ?
{ ...item, item.jsons.filter((json, i) => (i !== json_index)) } : item))
};

TA貢獻1982條經驗 獲得超2個贊
我通過使用 immutability-helpers 的 update() 解決了這個問題。非常便利
import update from 'immutability-helper';
/* some other code */
case DELETE_JSON:
const item_index = state.items.findIndex((url) => url.url_id === action.payload.url_id);
const json_index = state.items[item_index].jsons.findIndex((json) => json.json_id === action.payload.json_id);
return update(state, {
items: {
[item_index]: {
jsons: {$splice: [[json_index]]}
}
}
});
添加回答
舉報