問題タブ [om]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojurescript - ClojureScript / OM: 別のコンポーネントからコンポーネントの状態を更新する - または: グローバルな状態を操作する
非常に単純なアプリケーションで om と ClojureScript を使い始めています。
私のグローバルなアプリの状態は次のようになります。
ベクター「animals」内の各ハッシュマップの name プロパティは、「menu」と呼ばれる om コンポーネントによって HTML リスト構造 (ig LI-tag) にレンダリングされます。各エントリは、「エントリ」と呼ばれる別のコンポーネントによってレンダリングされます。(UL 要素として ig)。ユーザーがリスト エントリの 1 つにカーソルを合わせると、エントリの外観が変わります (おそらく背景が変わります)。これらの現在の状態を entry コンポーネント内に取り込み、om/IInitState を介して初期化します。
これはこれまでのところ機能します。次に、「ディスプレイ」と呼ばれる別のコンポーネントを追加します。ユーザーがリスト内のエントリをクリックするたびに、グローバル状態で動物の名前に関連付けられている画像を表示できる必要があります。これを解決する最善の方法は何かを自問しています。
2 つの可能性があります。
「エントリ」コンポーネントからの onClick イベントによって更新される「表示」コンポーネントでローカル状態を維持します。ここで、私の質問は次のようになります: コンポーネントの状態を別のコンポーネントから更新するにはどうすればよいですか?
または、「active_section」と呼ばれる別のプロパティをグローバル状態に導入します。これは、エントリ コンポーネントの onClick イベントによって更新され、「display」コンポーネントによって読み取られます。しかし、それは必要ですか?
om - アプリの状態の後に Om コンポーネントの状態を更新するにはどうすればよいですか?
私は Om で遊んでみようとしています (はい、om.next が来ることは知っていますが、いつ準備ができるかは明らかではありません。基本的な考え方は適用されると思います)。 ) 問題。
app-state の「エフェクト」メンバーから生成される選択ウィジェットと、そのエフェクトを下流に送信するボタン (LED ストリップを制御する) を含むコンポーネントがあります。
これまでのところ、実際には良好です。これは主に機能します。app-state が (REST 呼び出しを介して) :effects で設定されている場合、これは実際にオプションを埋めます。
問題はその厄介な:selected-effect
州のメンバーです。最初は nil ですが、select 要素が入力されると、セレクターは最初の要素を表示します。したがって、ユーザーが「Send Effect」ボタンをクリックすると、最初の効果を取得するのではなく、「nil」が送信されます。これは、「オプション」の子が正しく入力されているが、ビュー ステートが変更されていないためです。
グローバル状態でエフェクト リストを変更するとき:selected-effect
、現在の値が有効でない場合 (つまり、でnil
、効果A、B、およびCを入力します-選択した値を「A」に変更する必要があります...次に効果A、C、およびDを入力すると、Aのままになりますが、 B、C、D、それが理にかなっていれば、B に切り替える必要があります。
どうすればいいですか?