Redux 工具包中多个切片中的操作

Jon*_*man 18 redux redux-toolkit

Redux 工具包文档提到在多个减速器中使用操作(或者更确切地说是操作类型)

首先,Redux 操作类型并不意味着专用于单个切片。从概念上讲,每个切片缩减器“拥有”自己的 Redux 状态片段,但它应该能够侦听任何操作类型并适当地更新其状态。例如,许多不同的切片可能希望通过清除数据或重置回初始状态值来响应“用户注销”操作。在设计状态形状和创建切片时请记住这一点。

但是,“记住这一点”,鉴于工具包将切片名称放在每个动作类型的开头,实现这一目标的最佳方法什么?并且您从该切片导出一个函数并调用该单个函数来分派动作?我错过了什么?这是否必须以某种不使用的方式完成createSlice

小智 13

看起来这就是extraReducers的用途:

Redux 的关键概念之一是每个切片减速器“拥有”它的状态切片,并且许多切片减速器可以独立响应相同的动作类型。extraReducers 允许 createSlice 响应除它生成的类型之外的其他操作类型。

有点奇怪的是,动作调度器应该知道动作属于哪个减速器。我不确定拥有reducers 的动机,extraReducers,但您可以使用extraReducers允许多个切片响应相同的操作。

  • RTK 鼓励“按功能”切片。因此,通常情况下,大多数动作在其核心中都有属于它们的“自然”特征,而其他减速器只是“顺应它”。有时,一个动作实际上并没有“主要特征”,在这种情况下,只需使用“createAction”创建它并在多个切片(或普通减速器)中引用它就可以了。 (2认同)