int*_*tar 8 clojurescript reagent
我正试图用一个简单的绘图程序来处理clojurescript中的试剂.
我正在寻找一个如何使用Reagi以原则性的"FRP"风格访问鼠标位置的示例.
在各种试剂示例中,我可以看到如下所示的内容:
[:p [:onmousemove (fn (evt) ...)]]
Run Code Online (Sandbox Code Playgroud)
将处理程序附加到DOM的元素.
为了做一个Reagi"行为"我想写这样的东西:
(def mouse-positions (r/behavior ( ... )))
Run Code Online (Sandbox Code Playgroud)
但是我如何将这两者结合起来,以便我添加到DOM元素的处理程序提供Reagi行为?
其次,当我使用试剂时,我期望这些DOM节点能够定期重新创建.据推测,我还需要继续将事件处理程序重新绑定到Reagi流.我如何确保这一点?
干杯
小智 2
我想知道 Reagi 的事件流是否更适合。大致如下:
(defonce mouse-events (r/events {:x 0 :y 0}))
(defn home-page []
[:div {:onMouseMove (fn [event]
(r/deliver mouse-events {:x (.-clientX event)
:y (.-clientY event)}))}])
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用取消引用事件流@mouse-events。您不必担心必须重新绑定到事件流,因为它保存了对事件流的引用。
但是,请记住,将值推入 Reagi 流不会导致 Reagent 重新渲染直接引用它的节点。为此,您将需要某种试剂原子。
如果您正在创建一个绘图应用程序,我想您的状态/原子将存储在其他地方,并且您swap!或reset!那个会导致渲染发生。
另请注意,行为和事件都仅保留对最新值的引用,这对于绘图应用程序可能并不理想。还有 Reagibuffer可能会对此有所帮助。
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |