组件正确加载了初始数据,但是当从界面更改状态时数据没有改变,我可能做错了什么?
(ns ui.pivottable.react-pivottable
(:require ["react-pivottable/PivotTableUI" :default PivotTableUI]
["react-pivottable/TableRenderers" :as TableRenderers]
["react-plotly.js" :default Plot]
["react-pivottable/PlotlyRenderers" :as create-plotly-renderers]
[reagent.core :as r]))
(defn pivottable []
(let [state (r/atom {:data (clj->js [[:name "Alice" :age 30 :city "New York"]
[:name "Bob" :age 35 :city "Chicago"]
[:name "Charlie" :age 40 :city "New York"]])
:aggregator-name "Count"
:renderer-name "Table"
:rows [:name]
:cols [:age]})
component (r/adapt-react-class PivotTableUI)
plotly-renderers (create-plotly-renderers Plot)
table-renderers TableRenderers
params {:rows [:name]
:cols [:age]
:on-change #(do (reset! state (.assign js/Object #js {} %))
;; (reset! state (clj->js %) another try, it's the same)
(.log js/console @state))
:renderers (.assign js/Object #js {} plotly-renderers table-renderers)}]
[component (merge @state params)]))
迭戈。您正在使用 let 而不是 r/with-let。因此,当您更改原子的状态时,将渲染组件并再次使用数据初始化原子。