为什么在这个 ClojureScript 片段中使用 ^ 字符?
Why is the ^ character used in this ClojureScript snippet?
在 clojurescript re-frame todomvc 应用程序中,我们在 todomvc.views 命名空间中找到以下代码段。
(defn todo-list
[visible-todos]
[:ul.todo-list
(for [todo @visible-todos]
^{:key (:id todo)} [todo-item todo])])
虽然我已经阅读了关于metadata的Clojure章节,但我不太明白其目的:
^{:key
在上面的代码片段中。请解释。
当你有很多项目时,:key
是 React 所需要的,以便它们在组内是唯一的。但是最新版本的 React 不需要这些密钥。因此,如果您使用最新版本的 reframe / Reagent,请尝试不使用 :key
元数据。
此元数据等同于将 :key
放入组件中。因此,例如,您拥有的等同于:
[todo-item {:key (:id todo)} todo]
使用元数据方法很方便,在某些情况下肯定比 'first key in props passed to the component' 方法更容易。
还有更多 。
^{:key (:id todo)} [todo-item todo]
等同于 (with-meta [todo-item todo] {:key (:id todo)})
,参见 https://clojuredocs.org/clojure.core/with-meta
Reagent就是用这个来生成对应的带key的react组件。键帮助 React 识别哪些项目已更改、添加或删除。这是解释:https://reactjs.org/docs/lists-and-keys.html
在 clojurescript re-frame todomvc 应用程序中,我们在 todomvc.views 命名空间中找到以下代码段。
(defn todo-list
[visible-todos]
[:ul.todo-list
(for [todo @visible-todos]
^{:key (:id todo)} [todo-item todo])])
虽然我已经阅读了关于metadata的Clojure章节,但我不太明白其目的:
^{:key
在上面的代码片段中。请解释。
当你有很多项目时,:key
是 React 所需要的,以便它们在组内是唯一的。但是最新版本的 React 不需要这些密钥。因此,如果您使用最新版本的 reframe / Reagent,请尝试不使用 :key
元数据。
此元数据等同于将 :key
放入组件中。因此,例如,您拥有的等同于:
[todo-item {:key (:id todo)} todo]
使用元数据方法很方便,在某些情况下肯定比 'first key in props passed to the component' 方法更容易。
还有更多
^{:key (:id todo)} [todo-item todo]
等同于 (with-meta [todo-item todo] {:key (:id todo)})
,参见 https://clojuredocs.org/clojure.core/with-meta
Reagent就是用这个来生成对应的带key的react组件。键帮助 React 识别哪些项目已更改、添加或删除。这是解释:https://reactjs.org/docs/lists-and-keys.html