【发布时间】:2015-12-30 02:50:38
【问题描述】:
我正在通过一个非常简单的应用程序开始使用 om 和 ClojureScript。
我的全局应用状态如下所示:
(def app-state (atom {:animals [ {:name "dog" :img "pic01.jpg"}
{:name "cat" :img "pic02.jpg"}
{:name "mouse" :img "pic03.jpg"}
{:name "camel" :img "pic04.jpg"}]}))
向量“animals”中每个散列映射的 name 属性由我称为“menu”的 om 组件呈现为 HTML 列表结构(例如 LI-tag)。每个条目都由另一个称为“条目”的组件呈现。 (例如,作为 UL 元素)。 每当用户将鼠标悬停在列表条目之一时,条目的外观就会发生变化(可能背景会发生变化)。我在入口组件中捕获这些当前状态,并通过 om/IInitState 对其进行初始化。
到目前为止,这有效。现在我想添加另一个组件,称为“显示”。每当用户单击列表中的条目时,它应该能够在全局状态下显示与动物名称相关联的图像。我在问自己解决这个问题的最佳方法是什么。
我看到了两种可能性:
在“display”组件中保持本地状态,该状态由“entry”组件的 onClick 事件更新。 在这里,我的问题是:如何从另一个组件更新组件的状态?
或者在全局状态中引入另一个属性,可能叫做:“active_section”,由entry组件中的onClick事件更新,由“display”组件读取。但有必要吗?
【问题讨论】:
-
好像你刚开始使用 Om,就在 Om/Next 正在替换它的时候。
标签: clojurescript om