【发布时间】:2016-05-25 20:23:35
【问题描述】:
我正在使用的工具:Reactjs 0.14.7、react-router 2.0.0(通量模式)
注意:我标记了 Redux,只是因为我有一种预感(我没有使用它)我正在经历的事情可能是人们对它赞不绝口的原因之一。
我知道 react-router 已经管理了 组件树当前在视图中,并根据当前视图树的状态呈现组件。
问题:
但是,如果基于视图中的组件,一个组件需要知道哪些其他组件也在视图中,并且根据视图中的其他组件(视图状态)而表现不同呢?你会建议什么策略让组件知道其他组件在视图中?
我目前的解决方案:
我目前正在尝试使用 URL 来推断此全局状态,甚至对其进行解析并将其放入存储中,以便组件通过侦听该存储中的更改来了解视图状态。
我对此解决方案的问题:
简而言之,使用 store 管理视图状态变成了一个高度纠缠的过程,额外的操作散布在整个代码中。
1) 必须为任何改变路由的用户事件调用操作。
2) 在组件外部导航时需要触发动作(我认为在组件中保持动作触发要干净得多(请随意辩论那个)。
3)您还必须考虑返回按钮(当前使用 react-router onEnterHooks 来捕捉这种情况)。
但我真的很喜欢封装视图状态的概念,因为我可以想象它创建了一个很好的心理模型和更智能的组件,但只是解析当前 URL 并使用实用程序文件来确定当前视图状态在需要时,管理似乎比包含当前视图状态的商店更容易/更清洁的解决方案。
【问题讨论】:
标签: reactjs react-router redux flux reactjs-flux