我正在构建一个基于 om 的表单,可以查看折叠或展开的小节。
View 状态保存在子部分本地状态中:
(defn subsection-view [subsection owner]
(具体化
om/IInitState
(初始状态 [这个]
{:collapsed true}))
问题是每个小节 View 状态可以通过折叠展开全部按钮或为每个小节显示的单独按钮以两种方式影响。
为了处理 expand-compress-all 有一个全局折叠状态保存在表单本地状态中:
(defn 表单 View [数据所有者]
(具体化
om/IInitState
(初始状态 [这个]
{:all-collapsed true})))
显然两个按钮on-click
事件通过更新本地状态中的折叠状态来处理。
(om/update-state!owner:collapsed not)
我的问题是我应该如何知道哪个状态是 最后更新 为了显示正确的 View ?
或者哪里是正确的地方 (本地状态或应用程序状态)保存可能受组件树不同级别中不同触发器影响的折叠状态?
最佳答案
我是 core.async 的粉丝,我会使用 channel 来实现它。我会让各部分监听折叠/展开消息,并在出现时更改本地状态。本地状态更改将导致重新绘制。展开单个部分只会更新该部分的本地状态。
关于clojurescript - Cojurescript Om : handling local state changes in different components,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28746714/