【问题标题】:Correctly manipulating state in reagent正确操作试剂中的状态
【发布时间】:2017-09-20 14:02:46
【问题描述】:

我只是在 Clojurescript 中学习 Reagent,我只是在学习一些教程,但也许我错过了一些我有这个状态代码的东西

(defonce app-state (atom {:text "Hello Chestnut!" :click-count 0}))

和渲染的视图

(defn article []
  [:div
   [:div "The atom" [:code "click-count"] " has value : " (:click-count @app-state)]
   [:input {:type "button" :value "Add"
            :on-click #(swap! (:click-count @app-state) inc)}]
   ]
  )

我正在尝试在按下按钮时增加状态,但我在控制台上收到此错误

错误:没有协议方法 ISwap.-swap!为类型号定义:0

【问题讨论】:

标签: clojure clojurescript reagent


【解决方案1】:

原子应该被交换而不是 :click-count

(swap! app-state update :click-count  inc)

【讨论】:

  • 哇.. 我正在尝试(交换!@app-state update-in [:click-count] inc),但不起作用。你能告诉我,为什么不需要@符号吗?
  • 用@你只能得到原子的当前状态,要改变状态你必须交换原子本身。
  • @MochamadLuckyPradana 您的问题是 Clojure 特有的,而不是 Reagent 特有的。在 repl 中尝试一下,然后在 web 上下文中进行。这就是使 Clojure(Script) 变得有趣的原因 :-)
  • @Grav :感谢您的建议。我对一些英语有疑问,所以也许它会在途中帮助自己。对不起._.
猜你喜欢
  • 2022-10-24
  • 2018-10-12
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多