首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在clojurescript /试剂/ reagi中跟踪鼠标?

在clojurescript /试剂/ reagi中跟踪鼠标?
EN

Stack Overflow用户
提问于 2017-02-21 09:30:41
回答 1查看 677关注 0票数 9

我正试着用一个简单的绘图程序来掌握clojurescript中的试剂。

我正在寻找一个例子,如何访问一个原则上的"FRP“启发风格的鼠标位置与Reagi

在各种试剂的例子中,我可以看到类似这样的东西:

代码语言:javascript
复制
[:p [:onmousemove (fn (evt) ...)]]

将处理程序附加到DOM的元素。

为了创建一个Reagi "behaviour“,我想写这样的东西:

代码语言:javascript
复制
(def mouse-positions (r/behavior ( ... )))

但是,我如何将这两者结合起来,才能使添加到DOM元素的处理程序提供Reagi行为呢?

其次,因为我使用的是试剂,所以我希望定期重新创建这些DOM节点。大概我也需要不断地将事件处理程序重新绑定到Reagi流。我如何确保这一点?

干杯

EN

回答 1

Stack Overflow用户

发布于 2017-07-14 01:27:05

我想知道Reagi的事件流是否更适合。大致是这样的:

代码语言:javascript
复制
(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也可能对此有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42357138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档