我可以使用的Java版本的react
this.props
但是我可以用来做道具吗
:reagent-render
打回来?
Chart.js第14行中的I am trying to do as done here。
最佳答案
要回答您的问题,您可以通过执行以下操作来访问component
中的props
和reagent-render
(ns chartly.core
(:require
[reagent.ratom :as ra]
[reagent.core :as r]))
(defn data-fn [implicit-this]
;; use implicit-this as needed, which is equivalent to "this"
;; From create-class docs -
;; :component-did-mount (fn [this])
)
(defn chart-render []
(let [comp (r/current-component) ;; Reagent method
r-props (r/props comp) ;; Reagent method
js-props (.-props (clj->js comp))]
(js/console.log "PROPS" r-props) ;;-- etc...
[:div {:style {:width 100}}]))
(def data (ra/atom {})) ;;--> see more info on reagent-atom
(defn chart-component []
(r/create-class
{:component-did-mount data-fn
:display-name "chart-component"
:reagent-render chart-render}))
To use -
[chart-component]
但是,这是反模式,将非常难以管理,因为您尝试在内部使用
component-did-mount
更新数据prop,完成后,将需要手动发信号React component
进行自身更新。Reagent的功能之一是通常使用
atom
来检测更改和更新组件。有关更多信息,请参见Managing State in Reagent。您正在寻找的正是Re-frame Framework正在帮助管理的内容。您建立了一个数据存储,当存储发生更改时,它会向订户(React元素)发出信号以进行相应更新,而您不必自己处理信号更改。
在某些极端情况下,有必要利用生命周期事件,尤其是对于图表和其他图形库,但是如果您发现试剂
atoms
和/或re-frame library
不足以满足您的需求,我可能建议您重新访问。希望这可以帮助。关于clojurescript - 在试剂的:reagent-render函数中获取 Prop ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48341977/