React中Reducer更新列表组件异常:多Package时删元素致其他Package清空
React状态管理问题求助
背景
自学React,做产品列表管理组件:
- 列表由
LabelsReducer负责增删改操作 - 列表项包含单个
Label组件,或是作为分组的GroupLabel组件 GroupLabel的内容由GroupReducer单独管理
预期流程
- 通过主Reducer向列表添加Package(即分组)
- 列表状态同步更新
- 通过
GroupReducer为Package添加元素,借助useEffect同步更新主列表 - 删除Package内元素时,若Package为空,则通过主Reducer将其从列表移除
当前问题
添加两个含元素的Package后,删除第一个Package的所有元素,第一个Package被正常移除,但第二个Package的内容也变成空数组,未保留原有元素。
已观察现象
- 第二个Package的内容会变为
GroupReducer的初始状态 - 删除第二个Package的元素时,第一个Package不受影响,符合预期
- 移除“Package为空则删除”的条件后,第二个Package不会被修改
核心代码文件
/src/hook/LabelsReducer.js(主列表Reducer)/src/hook/GroupReducer.js(分组Reducer)/src/App/FilterLabel/Label.js(元素组件)/src/App/FilterLabel/GroupLabel.js(分组组件)
内容的提问来源于stack exchange,提问作者dmi
相关产品推荐
相关产品推荐

