我可以使用的Java版本的react

  this.props

但是我可以用来做道具吗
  :reagent-render

打回来?

Chart.js第14行中的I am trying to do as done here

最佳答案

要回答您的问题,您可以通过执行以下操作来访问component中的propsreagent-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/

10-10 01:04