1

我是新手clojureclojurescript。我只是想知道如何在clojurescript.

这是图书馆的链接:https ://react-day-picker.js.org/examples/basic

我在我的名称空间中需要该库,如下所示:

(ns woot (:require [cljsjs.react-day-picker]))

但我不知道如何从这里开始

当我尝试

(js/react-day-picker)

我收到这个错误

#object[ReferenceError ReferenceError: react_day_picker is not defined]
 (<NO_SOURCE_FILE>)
4

1 回答 1

0

CLJSJS 通过提供一个externs 文件来工作,以便 ClojureScript 编译器在执行优化时避免混淆名称。如果您在 Github 中查看文件react-day-picker.ext.js 的末尾,您会注意到它DayPicker在全局范围内导出名称,因此您可能想要执行类似(js/DayPicker.)创建DayPicker.

话虽如此,我建议您研究Shadow-CLJS,因为与 NPM 生态系统的集成会更加熟悉。我有这个 repo 和 react-intl 的一个小演示,它应该很容易替换一些位并让基本的 react-day-picker 示例正常工作。

编辑:我试了一下:

  • 克隆我的 cljs-react-intl 存储库
  • 使用 npm 安装 react-day-picker:yarn install react-day-picker
  • 编辑文件assets/index.html以包含所需的样式表:
   <head>
     <title>minimal react-intl example</title>
     <meta charset="UTF-8">
     <!- ADD THE FOLLOWING -->
     <link rel="stylesheet" type="text/css" href="https://unpkg.com/react-day-picker@7.4.0/lib/style.css">
   </head>
  • 更新 main.cljs 文件以调用 day-picker 类:
(ns app.main
  (:require ["react-day-picker" :as dp]
            [reagent.core :as r]))

;; App

(defn example-app []
  [:p
   [:div "Here is a day picker:"]
   [:> dp/DayPicker]
   ])

;; App initialization

(defn mount-root []
  (r/render [example-app] (.getElementById js/document "app")))

(defn main! []
  (mount-root)
  (println "[core]: loading"))

(defn reload! []
  (mount-root)
  (println "[core] reloaded"))
  • 在开发模式下启动应用程序:
yarn run html
yarn shadow-cljs watch app

截屏:

截屏

于 2019-11-15T07:12:51.887 回答