I成分を有する:新しいpropsを試薬中のacomponentの状態に渡すには?
(defn inner-input [cljs_element activeEl title]
(let [form (atom title)]
(fn [cljs_element activeEl title]
[:input {:type "text"
:onChange #(reset! form (.. % -target -value))
:on-blur #(change-title cljs_element (.. % -target -value))
:style {:display (if (:active (:node cljs_element)) "block" "none")
:width (* (+ 1 (count @form)) 8)
:max-width 730
:min-width 170}
:value @form}])))
これは、他の構成要素にネストされている:
(defn card-input [cljs_element activeEl]
(fn [cljs_element activeEl]
(let [title (:title (:node cljs_element))]
[:div
[inner-input cljs_element activeEl title]])))
iは内側入力成分で入力データを入力すると、私は、ローカル状態を更新する必要フォーム。そして、外部コンポーネントカード入力の更新が私のフォームを新しいタイトルの議論から私のフォームをリセットしたい場合。どうすればそれを達成できますか?私が試した
はインナー入力コンポーネントでのletとFNの間(reset! form title)
を置くが、それはあなたが聞いて停止するように、タイトル、およびreagent/dispose
への変更を聞くことreagent/track!
を使用することができます
私があなたが 'render'関数の' form'アトムを更新する必要があることを覚えている限り、それは外部コンポーネントからの各レンダーコールの後に呼び出されるでしょう。 – leetwinski
@leetwinskiの直後に '(fn [cljs_element activeEl title] ...)'の直後に '(reset!form title)'を追加する必要がありますが、この場合 '(reset!form title)'はlocalstateの変更を書き換えます:onChange外側のコンポーネントが更新されたときにのみ、引数からのフォームアトムをタイトルに変更する必要があります。 –
あなたのレンダリング関数(リセット)は、外部コンポーネントの更新の場合にのみ呼び出されます。その後、変更ハンドラ – leetwinski