gpt4 book ai didi

javascript - redux 删除操作中的切片与过滤器

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:31:22 26 4
gpt4 key购买 nike

Redux 文档中,我知道我们永远不应该改变状态,这就是为什么我们应该使用 concatslice 方法,所以我最终得到以下 reducer (为简化起见删除了大部分操作):

export default function blocks(state = [], action) {  
switch (action.type) {
case DELETE_BLOCK:
var index = state.findIndex(e => e.id === action.blockId);
return [...state.slice(0, index), ...state.slice(index + 1)];
default:
return state;
}

在我的例子中,我没有要删除的元素的索引,所以我可以使用 filter 吗?像这样:

export default function blocks(state = [], action) {  
switch (action.type) {
case DELETE_BLOCK:
return state.filter(e => e.id !== action.blockId);
default:
return state;
}

最佳答案

filter 不会改变状态,它返回一个新的 Array 所以这里没有错。

当我们处理不可变数据时,我们尽量避免filter,因为它总是返回一个新的引用,破坏引用相等性检查===。但是如果你不使用这种引用,如果你认为状态没有改变(我认为你没有这样做,没关系),你就不必担心关于使用 filter

关于javascript - redux 删除操作中的切片与过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38282116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com