小编vis*_*uvp的帖子

获取错误未捕获错误:断言失败:反应是只读的; 不允许使用现场

我是clojure和试剂的新手.我试图生成动态数量的复选框,其状态存储在app状态,这是一个像这样的dicts列表

[{:checked false, :text "Sample text 1"} {:checked false, :text "Sample text 2"} {:checked false, :text "Sample text 3"}]

下面的函数应该生成一个对应于app的db(db)指定索引的复选框.该功能可以完成工作,复选框可以单击.

(defn gen-checkbox [index db] 
     [re-com/checkbox
            :label (:text (@db index))
            :model (:checked (@db index))
            :on-change #(swap! db assoc-in [index :checked] (not(:checked (@db index))))
     ])
Run Code Online (Sandbox Code Playgroud)

但是,当我单击任何复选框时,我在浏览器控制台中收到此错误.

Uncaught Error: Assert failed: Reaction is read only; on-set is not allowed
Run Code Online (Sandbox Code Playgroud)

错误发生在swap!.有人可以指出我做错了吗?

db初始化部分如下:

(re-frame/reg-event-db ::initialize-db 
   (fn [_ _] 
      (atom [{:checked false :text "Sample text"}, {:checked false :text "Sample text"}, {:checked false …
Run Code Online (Sandbox Code Playgroud)

clojure clojurescript single-page-application reagent re-frame

4
推荐指数
1
解决办法
198
查看次数