我偶然发现了"例如/ 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文档,#34;#"当它以这种方式使用时。
答案 0 :(得分:6)
来自Om tutorial:
#js {...}
和#js [...]
是所谓的读者文字。 ClojureScript通过#js
支持JavaScript的数据文字。#js {...}
适用于JavaScript对象:
#js {:foo "bar"} ;; is equivalent to
#js {"foo" "bar"}
答案 1 :(得分:6)
首先Om是Clojurescript库。 Clojure和Clojurescript之间存在一些差异,它们记录在案here。
#js
被称为标记文字,来自edn,基本上标记的文字告诉读者如何解析数据,在#js
的情况下,它告诉读者将数据解析为Javascript
对象。请查看here以获取更多信息。
答案 2 :(得分:0)
所有调度阅读器宏都以#开头。当你看到它时,这意味着在读取代码时会发生一些特殊的事情,这与#js没有什么不同,而#(或#_或甚至#{对于集合。在这种情况下它会告诉读者接下来的内容是一个JavaScript文字。
更多信息:http://clojure.org/reader#The%20Reader--Macro%20characters