我有以下代码:
const initialState = {
searchItems: ['Item'],
}
export default (state = initialState, action) => {
switch (action.type) {
case BACKSPACE_REMOVE_SEARCH_ITEM:
console.log(state.searchItems);
return {
...state,
searchItems: [...state.searchItems.splice(-1)],
};
default:
return state;
}
}
但是当我尝试执行这样的操作时,我收到与之前相同的数组,其中包含“Item”,但它不会“删除它”。哪里有问题?
最佳答案
.splice
返回已删除的元素。实际上,您根本不应该使用 .splice
因为它会改变原始数组。我知道您正在传播原始的,但传播语法会产生浅副本。所以,要小心。 .slice
会更好,它还返回已删除的切片。在这种情况下,您可能需要使用 .slice
和 .concat
的组合,或者您可以使用 .filter
。
return {
...state,
searchItems: state.searchItems.filter( (_,i) =>
i !== state.searchItems.length-1
),
};
关于reactjs - 如何删除 redux 存储数组中的最后一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52433999/