2016-05-09 5 views
2

В приложении redom frame todomvc для clojurescript мы находим следующий фрагмент в пространстве имен .Почему символ^используется в этом фрагменте ClojureScript?

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

Хотя я прочитал главу Clojure на metadata я не совсем понимаю цель:

^{:key 

в фрагменте кода выше. Пожалуйста, объясни.

ответ

3

:key - это то, что требуется Реагировать, когда у вас много предметов, чтобы они могли быть уникальными внутри группы. Но последней версии React не нужны эти ключи. Поэтому, если вы используете последние версии reframe/Reagent, попробуйте без метаданных :key.

Данные метаданные эквивалентны размещению :key внутри компонента. Так, например, что у вас есть эквивалент:

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

Использование подхода метаданных является удобство, которое должно в некоторых случаях может быть проще, чем «первый ключ в реквизита перешел к компоненту» подход.

Подробнее explanation.

+0

Интересно для автора передела! - Просто нашел это в учебнике Reagent ... «В этом простом примере часть элемента^{: ключевой элемент} на самом деле не нужна, но привязка уникального ключа к каждому элементу в динамически сгенерированном списке компонентов является хорошей практикой и помогает реагировать на повышение производительности для больших списков ». –

 Смежные вопросы

  • Нет связанных вопросов^_^