2

clojurescript re-frame todomvc アプリケーションでは、todomvc.views名前空間に次のスニペットがあります。

(defn todo-list
  [visible-todos]
  [:ul.todo-list
   (for [todo  @visible-todos]
     ^{:key (:id todo)} [todo-item todo])])

メタデータに関するClojureの章を読んだことがありますが、次の目的がよくわかりません。

^{:key

上記のスニペットで。説明してください。

4

2 に答える 2

4

これ:keyは、多数のアイテムがある場合に React が必要とするものであり、グループ内でそれらを一意にすることができます。しかし、React の最新バージョンではこれらのキーは必要ありません。したがって、最新バージョンの reframe / Reagent を使用する場合は、:keyメタデータなしで試してください。

:keyこのメタデータは、コンポーネント内に配置することと同じです。たとえば、あなたが持っているものは次のものと同等です:

[todo-item {:key (:id todo)} todo]

メタデータ アプローチを使用すると便利です。場合によっては、「コンポーネントに渡される props の最初のキー」アプローチよりも簡単です。

ここにもっと説明があります。

于 2016-05-09T09:44:59.770 に答える
1

^{:key (:id todo)} [todo-item todo]https://clojuredocs.org/clojure.core/with-meta(with-meta [todo-item todo] {:key (:id todo)})参照 してください。

Reagent はこれを使用して、対応する反応コンポーネントをキーで生成します。キーは、どの項目が変更、追加、または削除されたかを React が識別するのに役立ちます。説明は次のとおりです: https://reactjs.org/docs/lists-and-keys.html

于 2021-09-08T21:59:46.213 に答える