         :value (:title itemset)}]]
      [:div.panel-body
       (for [[id block] blocks]
-        (item-block id block))]]))
+        ^{:key id} [item-block id block])]]))
 
 (def troll-objectives
   (into {} (for [{:keys [name calc troll] :as stat} stats


(defn item-recommendation [recommended]
  [:div.media-list
   (map item-component
        (range)
        recommended)])


                   stat-optimized? (as-> el [:b el]))]]))])

(defn item-block [id block]
  (let [items (mapv #(get @items (int (:id %))) (:items block))]
   [:div.panel.panel-default
    [:div.panel-heading
     [:input.form-control
      {:type "text"
       :on-change #(swap! app assoc-in [:itemset :blocks id :type] (-> % .-target .-value))
       :value (:type block)}]]
    [:div.panel-body
     (for [item items]
       [:span {:key (:id item)}
        [item-image item]])]]))

(defn item-set [itemset]
  (let [blocks (map vector (range) (:blocks itemset))]
