在ClojureScript中使用hat(^)字符

时间:2015-08-20 11:24:56

标签: clojurescript

我对以下代码中使用帽子字符(^)感到困惑,该代码已从here解除。

phone-component

phone本身就是一个函数(但不会像在向量中那样被调用)而:battery将是一个带有^等键的映射。

我的here表示cur.execute("INSERT INTO " + relevant_table + "VALUES (?,?,?,?,?)", (export_date, export_morning, export_day, export_eve, export_night)) 表示元数据或类型提示,但没有帮助!

这是文件:reagent-phonecat

2 个答案:

答案 0 :(得分:1)

首先要确保你理解key做出的反应,因为试剂只是将它传递给React:

http://facebook.github.io/react/docs/multiple-components.html#dynamic-children

  

[...]您可以通过为每个孩子分配一个密钥来唯一地识别每个孩子:

     

[...]

     

当React协调键控子项时,它将确保任何具有键的子项将被重新排序(而不是被破坏)或被销毁(而不是重用)。

接下来,^{...}构造只是将元数据附加到下一个表单

http://clojure.org/reader#The%20Reader--Macro%20characters

注意:此示例中的类型提示。这需要:tag元数据密钥。

本例中的下一个表单是一个简单的向量[..],其中您的第一个元素是对您希望(最终)调用的组件的引用。

Reagent采用数据结构(嵌套向量)并将从中生成虚拟DOM元素并将其传递给反应。它还将调用嵌套组件。

因此,试剂将读取您返回的每个向量的元数据,并传递您指定作出反应的任何:key。这只是为了反应可以识别每次重新渲染中的元素。

因此,在您的情况下,phone将被传递以作为关键作出反应。请注意,该键最终将作为react元素的DOM属性中的字符串。所以最好传入一个不太长的字符串,以免弄乱你的DOM属性。

答案 1 :(得分:-1)

浏览完文件后,我可以看出手机组件是一个功能的宏。

此宏可用于调用该函数。 Macro接受电话键作为输入并返回有关电话的详细信息。

链接可能会有所帮助 http://java.ociweb.com/mark/clojure/article.html