导入本机React组件

时间:2016-08-15 15:54:04

标签: reactjs clojurescript

我正在尝试在我的朗姆酒应用程序中使用React Bootstrap的React组件。

在我的宏命名空间中,我有一些代码found on the rum gitter

(defn ->kebab [s]
  (str/join "-" (map str/lower-case (re-seq #"\w[a-z]+" s))))


(defn gen-wrapper [component]
  `(defmacro ~(symbol (->kebab (str component))) [& args#]
     (let [[opts# & [children#]] (if (-> args# first map?)
                                   [(first args#) (rest args#)]
                                   [nil args#])]
       `(js/React.createElement
         ~(symbol "js" (str "window.ReactBootstrap." (name '~component)))
         (cljs.core/clj->js ~opts#)
         ~@children#))))


(def components '[Button
                  ])

(defmacro gen-wrappers []
  `(do
     ~@(clojure.core/map gen-wrapper components)))

然后在我的devcard命名空间中我有:

(pm/gen-wrappers)

(rum/defc foo []
  [:div (button nil "bggg")])

(defcard foo "" (foo))

错误是:

  

react.inc.js:18342 Uncaught Error:Invariant Violation:对象是   作为React子节点无效(找到:js / React.createElement)。如果你   意味着渲染子集合,使用数组或换行   使用React附加组件中的createFragment(object)创建对象。校验   foo的渲染方法。

0 个答案:

没有答案