Redux-Toolkit中购物车商品删除问题:filter方法失效原因解析
Redux-Toolkit购物车删除商品:filter失效、splice生效的原因
核心原因是两段代码对action.payload的使用逻辑完全不匹配,加上你实际调用时传递的payload类型和filter代码的预期不一致:
两段代码的payload用途天差地别
第一段filter代码里,你写的逻辑是「删除title等于action.payload的书籍」,默认认为payload是书籍的标题字符串;而第二段splice代码里,你把action.payload当成了数组的索引数字来用,直接删除对应位置的元素。
如果你实际触发删除时,传递的是书籍在数组里的索引(比如点击列表项时传下标),那filter的判断条件book.title !== 索引值永远成立,过滤后的数组和原数组一模一样,看起来就是“没生效”;而splice直接根据索引删元素,自然正常工作。关于Redux-Toolkit的Immer补充说明
别被这个混淆——Redux-Toolkit用Immer既允许直接修改原数组(比如splice),也允许赋值新数组(比如filter返回的新数组赋值给state.books),这两种操作都是合法的。所以filter代码本身写法没问题,问题出在payload的传递和预期不匹配。
内容的提问来源于stack exchange,提问作者akhtarvahid
相关产品推荐
相关产品推荐

