我正试着用一个简单的绘图程序来掌握clojurescript中的试剂。
我正在寻找一个例子,如何访问一个原则上的"FRP“启发风格的鼠标位置与Reagi。
在各种试剂的例子中,我可以看到类似这样的东西:
[:p [:onmousemove (fn (evt) ...)]]将处理程序附加到DOM的元素。
为了创建一个Reagi "behaviour“,我想写这样的东西:
(def mouse-positions (r/behavior ( ... )))但是,我如何将这两者结合起来,才能使添加到DOM元素的处理程序提供Reagi行为呢?
其次,因为我使用的是试剂,所以我希望定期重新创建这些DOM节点。大概我也需要不断地将事件处理程序重新绑定到Reagi流。我如何确保这一点?
干杯
发布于 2017-07-14 01:27:05
我想知道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)}))}])然后,您可以使用@mouse-events解除事件流。您不必担心必须重新绑定到事件流,因为它持有对它的引用。
但是,请记住,将值推入Reagi流不会导致Reagent重新呈现直接引用它的节点。为此,你需要某种试剂原子。
如果你正在创建一个绘图应用程序,我想你的状态/原子将存储在其他地方,然后你swap!或reset!它,以使渲染发生。
另外,请注意,行为和事件都只包含对最新值的引用,这对于绘图应用程序来说可能并不理想。里奇的buffer也可能对此有所帮助。
https://stackoverflow.com/questions/42357138
复制相似问题