This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-08-05
Channels
- # all-the-channels (1)
- # announcements (3)
- # asami (13)
- # beginners (227)
- # calva (2)
- # chlorine-clover (8)
- # cider (7)
- # clj-kondo (4)
- # cljs-dev (21)
- # cljsrn (8)
- # clojure (64)
- # clojure-europe (39)
- # clojure-france (2)
- # clojure-italy (3)
- # clojure-losangeles (1)
- # clojure-nl (20)
- # clojure-uk (8)
- # clojurescript (24)
- # conjure (12)
- # datalog (9)
- # datomic (24)
- # emacs (8)
- # figwheel-main (1)
- # fulcro (15)
- # jobs-discuss (1)
- # malli (5)
- # meander (3)
- # off-topic (26)
- # re-frame (15)
- # reagent (10)
- # reitit (1)
- # reveal (1)
- # sci (15)
- # shadow-cljs (25)
- # spacemacs (7)
- # sql (3)
- # xtdb (1)
The reagent docs have this code example:
(defn lister [items]
[:ul
(for [item items]
^{:key item} [:li "Item " item])])
Can anyone explain the ^{:key item}
part to me? I know that it is adding the key attribute for a list in React, but I don't quite understand the Clojure/Reagent syntax part of how this is workingIt seems like this is Reagent metadata?
to be clear, ^{:foo bar}
is vanilla clojure, and puts a metadata map onto a collection or symbol, but reagent has a special interpretation of specific metadata keys
3
^:foo
is often seen, it translates to ^{:foo true}
you can combine them
ins)cljs.user=> (def m ^:foo ^{:bar false} {})
#'cljs.user/m
(ins)cljs.user=> m
{}
(ins)cljs.user=> (meta m)
{:bar false, :foo true}
Ah that makes sense. Thanks @U4YGF4NGM and @U051SS2EU