shadow-grove-

shadow-grove-

November 9, 2022
clojure
clojurescript, shadow-grove

컴포넌트 리스트 그리는 방법 #

아래와 같은 데이터와

(def book-list
  {:section "Today"
    :list [{:id "0"
            :name "book1"
            :author "doong"
            :description "rorlame edalkwdqd qwlmdkwmd ql"}
           {:id "1"
            :name "book2"
            :author "ojo"
            :description "heleld qwdmlkqwd awlkda wk"}]}
   {:section "Weekly"
    :list [{:id "4"
            :name "book5"
            :author "asdw"
            :description "asdawd"}
           {:id "6"
            :name "book7"
            :author "qw w w"
            :description "wqlwd qwldkm qwlkdasd asd"}]})

아래와 같은 컴포넌트가 있을 때

(defc book-card [{:keys [name author description]}]
  (render
   (<< [:a {:class (css :relative :block :h-96)}
        [:span {:class (css :absolute :inset-0 :border-2 :border-dashed :border-black)}]
        [:div
         {:class (css :relative :flex :h-full :items-end :border-2 :border-black :bg-white :transition-transform [:hover {:transform "translate(-0.5rem, -0.5rem)"}])}
         [:div
          {:class (css :px-8 :pb-8 :transition-opacity [:hover :absolute :opacity-0])}
          [:h2
           {:class (css :mt-4 :text-2xl :font-medium)} name] [:h3 author]]
         [:div
          {:class (css :absolute :p-8 :opacity-0 :transition-opacity [:hover :relative :opacity-100])}
          [:h2 {:class (css :mt-4 :text-2xl :font-medium)} name]
          [:h3 author]
          [:p {:class (css :mt-4)} description]
          [:p {:class (css :mt-8 :font-bold)} "읽어보기"]]]])))

keyed-seq 를 사용해 book-list 데이터를 풀어 book-card에 전해줄 수 있다. 이때 2번 째 아규먼트는 키 함수인데 키워드를 통해 키 중복을 방지할 수 있다. 키 대신 identity 를 넣으면 모든 데이터에 중복이 없어야 렌더링 된다.

(sg/keyed-seq book-list :id book-card)

No notes link to this note