Что такое :‹› при сбое реагентов?

Я не понимаю тег :‹› в следующем коде clojure re-frame todomvc

(defn todo-app
  []
  [:<>
   [:section#todoapp
    [task-entry]
    (when (seq @(subscribe [:todos]))
      [task-list])
    [footer-controls]]
   [:footer#info
    [:p "Double-click to edit a todo"]]])

Может ли кто-нибудь помочь мне в этом?


person Jack Liu Shurui    schedule 03.10.2020    source источник
comment
В строке темы должен быть указан рефрейм. Это не особенность стандартной икоты.   -  person Biped Phill    schedule 03.10.2020
comment
Реагент скорее.   -  person Michiel Borkent    schedule 03.10.2020


Ответы (2)


Это создает React Fragment:

https://reactjs.org/docs/fragments.html

person Michiel Borkent    schedule 03.10.2020

Добавляя немного больше деталей к предыдущему ответу, fragment встраивается в окружающий список вместо создания дочернего элемента. Таким образом, он похож на оператор unquoted-splicing в Clojure ~@ по сравнению с обычным оператором unquote ~. Пример:

(defn middle-seq       [] [    :d :e :f])
(defn middle-seq-frag  [] [:<> :d :e :f])

При использовании для создания компонента Reagent мы видим разницу:

[:a :b :c (middle-seq)      :g :h :i]    ;=> [:a :b :c [:d :e :f] :g :h :i]
[:a :b :c (middle-seq-frag) :g :h :i]    ;=> [:a :b :c  :d :e :f  :g :h :i]

В противном случае вам пришлось бы реструктурировать ввод и использовать concat:

(vec
  (concat
    [:a :b :c]
    (middle-seq) 
    [:g :h :i] ))          ;=> [:a :b :c :d :e :f :g :h :i]
person Alan Thompson    schedule 04.10.2020