如何准备React.js组件以在ClojureScript中用作外部试剂组件?

时间:2016-05-02 11:38:56

标签: reactjs clojurescript reagent

我想将此React.js组件用作ClojureScript应用程序中的外部Reagent组件:

https://github.com/felixrieseberg/React-Spreadsheet-Component

但是该组件在存储库中不可用:

http://cljsjs.github.io/

如果目录中有React.js组件,那么将它与Reagent一起使用就像在下面的示例中一样简单。

(ns demo.views
  (:require [reagent.core :as reagent]
            [cljsjs.reactable]])

(defn example []
  [:div
  [:> Reactable.Table
    {:data (clj->js [
                 {:name "Foo" :section 51}
                 {:name "Bar" :section 51}
                 ])}
    ]
   ]
  )

我想知道我将如何处理React Spreadsheet组件,以便我可以以类似的简单方式使用它。如何准备React.js组件以在ClojureScript中用作外部Reagent组件?请提供明确的配方类型的描述。

注意:此问题How to use a ReactJS Component with Clojurescipt/Reagent看起来很相似,但没有回答我的问题。

2 个答案:

答案 0 :(得分:3)

归结为你想如何做JavaScript互操作...你有3个选择:

  1. 包含HTML文件中的js
  2. 将其构建为编辑的一部分
  3. 将其包含为库
  4. 我鼓励你试试(3);这并不困难,只需按照CLJSJS https://github.com/cljsjs/packages/wiki/Creating-Packages

    上的步骤操作即可

答案 1 :(得分:0)

使用ClojureScript's compiler options在构建中包含外部JS,然后使用试剂adapt-react-class在试剂视图中使用该组件。尽量不要依赖像CLJSJS这样的项目。

自己做这件事会让你控制你的项目。

(def reactable-table (r/adapt-react-class js/Reactable.Table)) (defn example [] [:div [reactable-table {:data (clj->js [ {:name "Foo" :section 51} {:name "Bar" :section 51}])}]])

中的

bundle exec rake neo4j:stop

bundle exec rake neo4j:start

在视图中

.factory("Items", function($firebaseArray) {
    var itemsRef = new Firebase("https://YOUR-FIREBASE/");
    return $firebaseArray(itemsRef);
})

但请注意,此组件捆绑了大量依赖项(jQuery)。你可能更喜欢用clojurescript /试剂制作这样的组件。