reactjs - Redux reducer 设计

标签 reactjs redux

在从事 Redux 项目时,我发现类似的问题是由于开发人员决定使用 UI 组件来建模其 reducer /数据,而不是孤立地考虑数据(就像设计数据库时那样)。

Q1。我们有一个涉及许多名词/“事物”(轨道、播放列表、用户...)的用户界面。您将如何为此设计 reducer ?每个都有一个单独的 reducer ?将它们全部放在一个“实体” reducer 中?或者其他一些与系统名词不直接关联的 reducer 设计?

第二季度。 UI 有两个组件:资源管理器组件和侧栏组件。资源管理器加载项目列表,并为每个项目提供一些选项(通过下拉/模式/...)来编辑某些属性。您可以将项目加载到侧边栏中,该侧边栏具有用于编辑属性的扩展选项。

通过其中一个组件将项目标记为“#summer”(发送 http 请求,成功返回)。将涉及/调度哪些 reducer 和操作创建者以确保组件反射(reflect)此更新?

最佳答案

Q1:在有意义的地方创建单独的 reducer ,即轨道、播放列表、用户,然后使用类似 combineReducers 的东西把它们放在一起。不要用组件树来建模你的商店,它与之无关。

问题2:您的商店中有一系列商品,每个商品都有其ID。然后,您的商店中有一个单独的 key ,仅保存侧栏中当前选定组件的 ID。资源管理器组件调度操作,类似于 SET_SIDEBAR_ITEM_ID ,具有所需项目的 id。 Sidebar组件订阅了商店,它寻找store.sidebar_item_id当它找到一个时,它会从商店中取出该商品,例如 store.collection.find(item => item.id === selectedId)并将其作为 props 传递给 Sidebar 组件。

当谈到你的最后一个问题时,组件不会反射(reflect)任何东西,它们只需要从商店中获取 Prop (通过 connect 装饰器)。一旦商店拥有正确的数据,React 就会为您更新组件。

关于reactjs - Redux reducer 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35470329/

相关文章:

javascript - React 中 onclick 的 setState 错误

javascript - 映射关联数组的值

javascript - 在 React Native 中显示映射数组中的数组元素

javascript - 单击时处理输入值 React js

javascript - 如何将 redux-form 绑定(bind)连接到表单的输入

reactjs - useEffect 派发问题(可能需要添加中间件)

javascript - 从子类 ReactJS 将参数传递给父类中的事件处理程序

reactjs - 如何在 redux 上使用 reselect 获取 ownProps?

javascript - 为什么我的 redux 组件中有多个容器?有什么好处?

reactjs - React Native 中的 Redux,没有 React Redux 中的导航状态