gpt4 book ai didi

cursor - OM:在事件处理程序中取消引用游标?

转载 作者:行者123 更新时间:2023-12-01 06:22:37 27 4
gpt4 key购买 nike

我试图了解何时必须取消引用游标以获取其值。

om cursors wiki它指出
事件处理程序不被认为是渲染阶段的一部分,因此处理程序中的游标应该被删除。
同样显示在 Basic-tutorial 中:

(defn contact-view [contact owner]
(reify
om/IRenderState
(render-state [this {:keys [delete]}]
(dom/li nil
(dom/span nil (display-name contact))
(dom/button #js {:onClick (fn [e] (put! delete @contact))} "Delete")))))

但是,在 TodoMVC code , 处理程序 (onclick, onchange...) 使用光标而不取消引用它:
(dom/button
#js {:className "destroy"
:onClick (fn [_] (put! comm [:destroy todo]))}))

那么,正确的做法是什么呢?

谢谢你。

最佳答案

请注意 deletecomm不是游标而是 core.async channel 。 put!操作向处理的 channel 添加消息 here .

游标是一种包装状态的方式(在 om 中称为 app-state)。您可能想要对该状态做两件事:

  • 更改状态:当您想更改应用程序状态时,请调用 om/transact!om/update!一个是指向应用程序状态的光标(从不需要取消引用)。 Om 安排此事务在下一个渲染阶段显示。
  • 读取状态:在渲染阶段读取时(在 renderrender-state 函数内,光标的工作方式与其值相同,即您不需要取消引用它。在任何其他时间点,光标可能正在处理或有计划事务,因此您希望取消引用它以获取当前值而不是某些不一致的状态。
  • 关于cursor - OM:在事件处理程序中取消引用游标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31901767/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com