我想做一些类似于Reagent form-3组件的事情,这些组件使我能够定义一些共享(静态) vars来用于生命周期函数。
基本上,我的问题是如何在下面的Reagent代码片段中构造类似于let的东西?我似乎不知道如何使用Om的defui宏正确地完成这一任务。
一个简单的例子是生成一个内部id,我可以通过gdom/getElement访问组件的特定实例的所有生命周期函数。
(defn my-component
[x y z]
(let [id (gensym "my-component-")] ;; <-- how to do this in Om?
(reagent/create-class
{:component-did-mount (...)
:component-will-mount (...)
:reagent-render
(fn [x y z] (js/console.log id)))) ;; <-- id is available发布于 2017-11-08 14:21:40
您可以使用om.next/set-state!、om.next/update-state!和om.next/get-state对组件本地状态进行写入、更改和读取。
然而,组件本地状态是应用程序状态的糟糕的近亲。要使用app状态,请给您的defui组件一个is,并简单地组成一个关键字,该关键字是组件查询的一部分。然后设置、读取和变异根据您发明的关键字分派的多个方法。
另外,如果您使用的是Fulcro而不是Om,那么您将不需要。
https://stackoverflow.com/questions/47181093
复制相似问题