私は ClojureScript を初めて使用し、チャートを新しいデータで更新しようとしています。ChartistとReagentを使用しています。最初のグラフのレンダリングは正常に機能しますが、チャーティスト関数のデータを変更すると、グラフは再度レンダリングされません。私はすでにatomでさまざまなことを試し、chartistの更新機能を使用しようとしました。チャーティスト更新APIへのリンクは次のとおりです
これまでの私のコードは次のとおりです。
(ns example.core
(:require [clojure.browser.repl :as repl]
[reagent.core :as reagent]
[cljsjs.chartist]
))
(defonce conn
(repl/connect "http://localhost:9000/repl"))
(defonce results(reagent/atom [1 1 6 15 25] ))
(defonce timespan (reagent/atom ["Mar-2012" "Jun-2012" "Nov-2012" "Oct-2013" "Nov-2014"]))
(def global-state (reagent/atom 0))
(defn show-chart
[resultsInChart timespaneInChart]
(let [chart-data {:labels timespaneInChart
:series [resultsInChart]}
options {:width "700px"
:height "380px"}]
(js/Chartist.Line. ".ct-chart" (clj->js chart-data) (clj->js options))))
(defn chart-component
[]
(let [some global-state]
(reagent/create-class
{:component-did-mount #(show-chart @results @timespan)
:component-did-update #(show-chart @results @timespan)
:display-name "chart-component"
:reagent-render (fn []
[:div {:class "ct-chart ct-perfect-fourth"}])})))
(defn home-page []
[:div
[:div
[:p [:button {:on-click #(reset! results [1 1 6 15 5]
)} "Change last Value to 5"]
]
]
]
)
(defn run []
(reagent/render [chart-component](.getElementById js/document "myChart"))
(reagent/render [home-page](.getElementById js/document "app"))
)
誰かが助けてくれたら最高です。
更新: figwheel をプロジェクトに追加して修正しましたが、これで問題が解決し、チャートが更新されました。最後に component-did-update の下にある Chartist の update 関数も使用しました。figwheel へのリンクは次のとおりですhttps://github.com/bhauman/lein-figwheel