私は、clojurescript と試薬を使用して単純な Web アプリに取り組んでいます。テキスト入力コンポーネントを含む単純な「タブ」コンポーネントを作成したいと思います。
アプリには 2 つのタブがあり、ユーザーはタブを選択するオプションがあり、これら 2 つのタブのそれぞれの値を「保持」したいと考えています。
コードは次のとおりです。
(defn atom-input [value]
[:input {:type "text"
:value @value
:on-change #(reset! value (-> % .-target .-value))}])
(defn simple-tab [index]
(let [pg-index (atom 1)
a (atom 0)]
(fn []
[:div
[:h4 (str "index: " @index)]
[atom-input a]])))
(defn main-page []
(let [index (atom 0)]
[:div.container
[:div.row
[:button {:on-click (fn [] (reset! index 0))} "select tab 1"]
[:button {:on-click (fn [] (reset! index 1))} "select tab 2"]]
[:div.row
[simple-tab index]]]))
(defn ^:export run []
(reagent/render-component
(fn [] [main-page])
(.-body js/document)))
問題は、タブを切り替えると、コンポーネントが入力フィールドの値を共有することです。ここで何が間違っていますか?
手伝ってくれてどうもありがとう!