所以我有一个减速器要添加到数组中 创建减速器:
export default (itemsList = [], action) => {
if (action.type === 'ADD_ITEM') {
return [...itemsList, action.payload]
}
return itemList
}
删除reducer(99%的地方这里有问题,但我不知道是什么):
export default (itemList = [], action) => {
if (action.type === 'DELETE_ITEM') {
return [...itemList, itemList.filter(item => item !== action.payload)]
}
return itemList
};
action / index.js:
export const addItemToList = item => {
return {
type: 'ADD_ITEM',
payload: selectedItem
}
};
export const deleteItemFromList = item => {
return{
type: 'DELETE_ITEM',
payload: selectedItem
}
};
说我有 itemList = ['abc','xyz','qwe']
并且我想使用deleteItem('xyz')从itemList删除'xyz'
答案 0 :(得分:1)
在删除时,您只需要返回过滤后的列表即可,也不必使用传播运算符。
export default (itemList = [], action) => {
if (action.type === 'DELETE_AUTHOR') {
return itemList.filter(item => item !== action.payload)
}
return listOfAuthorsSelected
};
答案 1 :(得分:0)
Array.filter()返回具有给定过滤条件的新数组,并且不更改现有数组。您无需使用...itemList
(散布运算符)。实际上,您实际上每次都在添加一个子数组。
这是一个简单的运行示例
var array1 = ["abc", "def" , "ghi"];
var array2 = [...array1, array1.filter((item) => {
return item !== "def"
})];
document.write(array2);
// correct way to filter
var array3 = ["abc", "def" , "ghi"];
var array4 = array3.filter((item) => {
return item !== "def"
});
document.write("<hr/>"+array4);