reactjs - 使用 Shadow-CLJS 将 react-table 导入 ClojureScript

标签 reactjs clojurescript clojurescript-javascript-interop shadow-cljs

Web 开发新手在这里。我正在尝试将 NPM react-table 包与 ClojureScript/Reagent 项目一起使用。我无法正确导入包。我所做的:

1/通过NPM安装react-table,在我的项目目录下

2/在我的主命名空间中,我包含了 (:require ["react-table" :as rt])
在 REPL 中,我可以看到它正在建立一些连接,只需输入 rt将返回 #js {:ReactTableDefaults #js {:data #js [], ...
我怎样才能真正创建一个表?我已经尝试过诸如
rt/ReactTable {:data [{:a 1 :b 2} {:a 3 :b 4} {:a 6 :b 8}] :columns [{:Header "a" :accessor "a"} {:Header "b" :accessor "b"}]}但我一直打到 TypeError: module$node_modules$react_table$lib$index.ReactTable is not a function
我也读过 https://code.thheller.com/blog/shadow-cljs/2017/11/10/js-dependencies-in-practice.html但这对我帮助还不够。

更新 - 使用 figwheel 我到达了某个地方,这就是我想在 shadow-cljs 中重现的内容:

在 project.clj 中:[cljsjs/react-table "6.8.6-0"]
在“ View ”命名空间中:(:require [cljsjs.react-table] [reagent.core :as r])
然后这实际上显示了一个表格:

(def ReactTable (r/adapt-react-class (aget js/ReactTable "default")))
(defn test-table []
  [:div {:style {:width 320}}
  [ReactTable {:data    [{:a 1 :b 2} {:a 3 :b 6} {:a 6 :b 8}]
               :columns [
                     {:Header "a" :accessor "a" :width 200}
                     {:Header "b" :accessor "b" :width 100}]
           :showPagination false
           :defaultPageSize 3}]])

(defn main-panel []
  [test-table])

谢谢!

最佳答案

react-table使用您可能没有在 shadow-cljs 中使用的“默认”导出构建但有点像 cljsjs 变体(即 (aget js/ReactTable "default") )。

所以正确的做法是:

(ns your.app
  (:require ["react-table" :as rt :default ReactTable]))

(defn test-table []
  [:div {:style {:width 320}}
    [:> ReactTable {:data ... :columns ...}]])

docs中的翻译表可能是一个有用的引用。

关于reactjs - 使用 Shadow-CLJS 将 react-table 导入 ClojureScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58257236/

相关文章:

clojure - 枚举命名空间并在 ClojureScript 中动态加载它们

Clojure:最小的 ClojureScript 两人聊天

clojure - 如何在 ClojureScript 中获取由 fetch API 返回的 Response 对象的正文文本?

clojurescript - 如何使用 ClojureScript 打开新窗口?

clojurescript - 使用 js->clj 转换为 json 时如何保留数组中的关键字?

javascript - React.js 错误 : Invariant Violation: Minified React error #37

javascript - 在 react-admin 中为 View 定义一个可重用的模板

node.js - 如何使用 core.async 代替回调?

javascript - 以下 React 组件之间有什么区别?

reactjs - 等待 DOM 上的 useCallback 效果