【问题标题】:Reusability of reducers at different levels of app state structure不同应用状态结构级别的reducer的可重用性
【发布时间】:2018-09-17 09:08:55
【问题描述】:

例如,我们有 reducer photos,它通过动作 ADD_PHOTOREMOVE_PHOTO 处理照片数组。如果我们有数组usersposts,它们都有照片数组的字段。

因此,为了避免代码重复,我将执行以下操作:

  1. 创建减速器user = combineReducers(..., photos, ...)
  2. 创建 actionCreator updateUser
const updateUser = (id, subAction) => ({ 类型:UPDATE_USER, 有效载荷:{ ID, 子动作 } })
  1. 创建reducer users(这里我使用的是Immutable.js)
功能用户(状态=列表(),动作){ 开关(动作类型){ //... 案例 UPDATE_USER: const { id, subAction } = action.payload const index = state.findIndex(user => user.id == id) 返回状态.updateIn( [索引,“照片”], 状态 => 照片(状态,子动作) ) 休息 //... 默认: 返回状态 } }
  1. 然后我将像这样使用它:

    dispatch(updateUser(id, addPhoto(url)))


这是我的问题的正确解决方案吗?

【问题讨论】:

    标签: redux


    【解决方案1】:

    为什么不简单地在用户发起的地方同时调度两者?

    dispatch(updateUser(id));
    dispatch(addPhoto(url));
    

    我以前没有遇到过您应用的这种模式。一个减速器负责减少另一个减速器的状态似乎有点不寻常。在它们之间创建一种感觉不是很纯粹的依赖关系。我什至不确定一个减速器应该能够/可以看到另一个减速器的状态。

    所以不知道“正确”,但我想说按你的方式做并不理想。我会尝试按顺序分派,或者可能以一种处理嵌套更新并将操作分派到多个减速器的元操作来分派。

    【讨论】:

      猜你喜欢
      • 2021-03-28
      • 1970-01-01
      • 2018-11-29
      • 2019-02-25
      • 2012-02-23
      • 2019-11-22
      • 2023-01-30
      • 1970-01-01
      • 2019-07-27
      相关资源
      最近更新 更多