4

我在“examples/mixins”下偶然发现了官方的 Om 示例,定义如下:

(def MyComponent (let [obj (om/specify-state-methods! (clj->js om/pure-methods))]
    (aset obj "mixins" #js [TestMixin])
    (js/React.createClass obj)))

“#js”是什么意思?当以这种方式使用符号“#”时,我找不到任何关于符号“#”的 Clojure 文档。

4

3 回答 3

6

来自Om 教程

#js {...}并且#js [...]是所谓的读者文字。ClojureScript 通过#js. #js {...}适用于 JavaScript 对象:

#js {:foo "bar"}  ;; is equivalent to
#js {"foo" "bar"}
于 2014-06-21T23:36:02.860 回答
6

首先Om是一个Clojurescript库。Clojure 和 Clojurescript 之间存在一些差异,它们在此处记录。

#js被称为标记文字,来自edn,基本上标记文字告诉读者如何解析数据,在#js它告诉读者将数据解析为Javascript对象的情况下。在这里查看更多信息。

于 2014-06-21T23:44:00.977 回答
0

所有调度阅读器宏都以 # 开头。当你看到这一点时,这意味着在读取代码的那一刻会发生一些特殊的事情,这与 #js 与 #( 或 #_ 甚至 #{ 对于集合没有什么不同。在这种情况下,它告诉读者接下来会发生什么是一个 JavaScript 文字。

更多信息:http: //clojure.org/reader#The%20Reader--Macro%20characters

于 2014-06-23T06:14:03.140 回答