不同应用状态结构级别的reducer的可重用性
Posted
技术标签:
【中文标题】不同应用状态结构级别的reducer的可重用性【英文标题】:Reusability of reducers at different levels of app state structure 【发布时间】:2018-09-17 09:08:55 【问题描述】:例如,我们有 reducer photos
,它通过动作 ADD_PHOTO
和 REMOVE_PHOTO
处理照片数组。如果我们有数组users
和posts
,它们都有照片数组的字段。
因此,为了避免代码重复,我将执行以下操作:
-
创建减速器
user = combineReducers(..., photos, ...)
创建 actionCreator updateUser
-
创建reducer
users
(这里我使用的是Immutable.js)
然后我将像这样使用它:
dispatch(updateUser(id, addPhoto(url)))
这是我的问题的正确解决方案吗?
【问题讨论】:
【参考方案1】:为什么不简单地在用户发起的地方同时调度两者?
dispatch(updateUser(id));
dispatch(addPhoto(url));
我以前没有遇到过您应用的这种模式。一个减速器负责减少另一个减速器的状态似乎有点不寻常。在它们之间创建一种感觉不是很纯粹的依赖关系。我什至不确定一个减速器应该能够/可以看到另一个减速器的状态。
所以不知道“正确”,但我想说按你的方式做并不理想。我会尝试按顺序分派,或者可能以一种处理嵌套更新并将操作分派到多个减速器的元操作来分派。
【讨论】:
以上是关于不同应用状态结构级别的reducer的可重用性的主要内容,如果未能解决你的问题,请参考以下文章
csharp 用于处理.net模型状态的可重用ValidationFilter属性