How to filter a list based on user input with ClojureScript and Om? How to filter a list based on user input with ClojureScript and Om? reactjs reactjs

How to filter a list based on user input with ClojureScript and Om?


I think that this is a better solution:

(ns om-tut.core  (:require-macros [cljs.core.async.macros :refer [go]])  (:require [om.core :as om :include-macros true]            [om.dom :as dom :include-macros true]))(def app-state (atom {:list ["Lion" "Zebra" "Buffalo" "Antelope"]}))(defn handle-change [e owner {:keys [text]}]  (om/set-state! owner :text (.. e -target -value)))(defn list-data [alist filter-text] (filter (fn [x] (if (nil? filter-text) true                     (> (.indexOf x filter-text) -1))) alist))(defn list-view [app owner]  (reify    om/IInitState    (init-state [_]      {:text nil})    om/IRenderState    (render-state [this state]      (dom/div nil        (apply dom/ul #js {:className "animals"}          (dom/input            #js {:type "text" :ref "animal" :value (:text state)                 :onChange (fn [event] (handle-change event owner state))})            (map (fn [text] (dom/li nil text)) (list-data (:list app) (:text state)))))))) (om/root list-view app-state  {:target (. js/document (getElementById "animals"))})