Redux Reducer报错items.map不是函数:两种更新方式问题排查
Redux更新quantity报错原因解析
- 这个
items.map is not a function报错不是因为修改原属性导致的,核心问题是你返回的state结构完全变了。 - 你的初始state应该是一个item数组(毕竟成功的方式用了
map遍历),但用find的话,返回的是匹配到的单个item对象——相当于把原来的数组state替换成了单个对象。后续组件里尝试调用items.map时,对象根本没有map方法,自然报错。 - 成功的方式之所以能行,是因为
map遍历后返回的还是一个数组:匹配到目标item时,你应该是用{...item, quantity: 新值}生成了新对象(符合Redux的immutable要求),其他item原样返回,最终state结构和初始状态一致,组件能正常调用数组的map方法。 - 你提到的“Reducer不能修改原属性”是Redux的immutable规则,这是为了让Redux能正确检测state变化,但它不是这次报错的原因——哪怕你在
find的方式里没修改原item,只要返回的不是数组,还是会触发同样的错误。
内容的提问来源于stack exchange,提问作者botana_dev
相关产品推荐
相关产品推荐

