更改界面上来自react-pivottable的clojurescript中的PivotTableUI不呈现新状态

问题描述 投票:0回答:1

组件正确加载了初始数据,但是当从界面更改状态时数据没有改变,我可能做错了什么?

(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)]))
pivot-table clojurescript reagent shadow-cljs
1个回答
0
投票

迭戈。您正在使用 let 而不是 r/with-let。因此,当您更改原子的状态时,将渲染组件并再次使用数据初始化原子。

© www.soinside.com 2019 - 2024. All rights reserved.