問題タブ [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 を試しているところです。
私のプログラムデータは単一のアトムにあります: app-state.
そのアトムにシーケンスを入れると、たとえば。
その後、レンダリングでカーソルを取得できます
そしてそれを横切ってマップします:
ただし、シーケンスを返すことができるメソッドを持つ defrecord がある場合:
THATをアプリケーション状態にします
...
私はこれを行うことはできません:
カーソルにメソッド .getSeq がないというエラーがスローされるだけです
それは理にかなっている。しかし、カーソル内の ThingCollection オブジェクトを実際に取得するにはどうすればよいでしょうか? これの例は見つかりません。そして、私が試したことは何も私にそれを与えないようです.
jquery - Om/Clojurescript (jQuery から) を使用して React で基本的なアニメーションを実現するにはどうすればよいですか?
私は Om/Clojurescript を使用した React に飛び込んでおり、これまでのすべてのフロントエンド作業で jQuery を使用してきました。jQuery でワンライナーである単純で一般的なタスクを達成する方法を理解するための大きな障害があります。
非常に単純な例として、メニューを切り替えるボタンを取り上げます。
私の理解では、この単純な jQuery 機能を React に実装することはできません。React の外部で DOM 操作を行っているため、問題が発生する可能性があります。正しいですか?
したがって、私が理解できることから、私が想像しているものは最善の解決策ではありません。
をクリックする#menu-trigger
と、その:open
状態が切り替わります。.active
のクラスを切り替えるul#menu
方法、または他のコンポーネントがこのアクションに応答する方法について混乱しています。$('.menu-can-toggle')
( jQueryのセレクターに似ています。
新しいパラダイムやこのようなタスクへのアプローチに頭を悩ませるだけの問題だと思いますが、私が見つけたものはすべてReact CSSTransitionGroupなどで信じられないほど複雑に見えます.シンプルを達成する標準的な方法があるかどうか疑問に思っています.上記の(本質的には 1 行の) jQuery のようなタスク。
clojure - コンポーネント データに欠落しているキーの初期状態を設定する
私はClojureScriptとOmに入ろうとしています。私がぐるぐる回っている特定のケースがあります。
キーなしで最初にレンダリングされるコンポーネントがあります。
このコンポーネントが初めて呼び出されたとき、:stats
キーは単純に に存在しませんdata
。そのため、統計を取得するために API 呼び出しを行います。しかし、React は引き続きrender
関数を呼び出すため、コンポーネントがクラッシュします。
data
と呼ばれる空のマップを提供するこのコンポーネントの初期状態を設定して、呼び出しで:stats
レンダリングしようとするのを防ぐにはどうすればよいですか?nil
(om/build model-stats-view)
unit-testing - リクエストをモックして非同期 API 呼び出しでコンポーネントをテストする
私はまだ Cljs と Om の学習段階にあります。コンポーネントテストの作成を検討しています。一部のコンポーネントにcljs-http
は、私が作成した API への呼び出しがあります。テストするとき、これらの API 呼び出しで実際にリクエストを送信したくないので、リクエストをモックしてフィクスチャを返すことを検討しています。私が持っているコンポーネントの例を次に示します。
コードが実際に構文的に正しいかどうか気にしないでください。要点を示しているだけです。
ここでやりたいことはasync-component
、これと API 呼び出しをテストして、リクエストをモックするフィクスチャがレンダリングされるかどうかを確認することです。これはどのように行われますか?非同期コードをテストするためのブロックがあることは知っcljs.test
ていますが、すべての例は、より大きなコンテキストではなく、その中にasync
のみ含まれる実際のコード ブロックをテストすることを示しています。go
clojure - clojureでcore.cljsのdb.cljメソッドにアクセスする方法
で Web アプリを作成しようとしていますclojure
。私は使用clojurescript om
して反応しました。との 2 つのファイルがcore.cljs
ありますdb.clj
。
core.cljs
の ui を含み、すべてのlogin page
を含みます。db.clj
database connections
今db.clj
、core.cljs でメソッド add-user[username password] を呼び出そうとしています。
のdb.clj
のcore.cljs
しかし、私はそのメソッドを呼び出すことができませんcore.cljs
。次のようなエラーメッセージが表示されます
clojurescript - ClojureScript、Om、および Om-Bootstrap: ボタンをクリックして入力を編集可能にする
om-boostrap を使用して賃借人情報を表示および編集するページを作成しています。(Clojure は知っていますが、CLJS/Om/React/最新の Web 開発全般は初めてです。) テナント情報の表示と編集の間の UI と機能は似ています。どちらも入力フィールドを使用できます。編集には、フィールドを「静的」ではなく「テキスト」にする必要があり、「送信」ボタンと「キャンセル」ボタンが必要です。
私が直面している問題は、そのようなコンポーネントを変更する React/Om の方法を理解できないことです。ビューは次のように定義されます。
ここでは関数全体を貼り付けませんtenant-view
が、om-bootstrap を使用して各テナント データ フィールドの Bootstrap 入力を作成します。
複数のアプローチを試しました。:on-click
ボタンの機能を使用してアプリの状態を変更し、edit?
プロパティをに設定しtrue
、入力を編集可能にするために再レンダリングを促す最新のものを投稿しました。
これは機能せず、React または Om のドキュメントにガイダンスが見つかりません。
- 同じコンポーネントを異なる方法でレンダリングする正しい方法は何ですか? (私の場合、
view
関数の入力フィールドです。) - どの React または Om ドキュメントが関連していますか?
edit?
更新:フラグをにハードコードすると、入力を編集可能にすることができるので、入力を編集可能にすることtrue
は問題ではありませstatic
んtext
。
error-handling - Clojurescript/試薬処理エラー
製品の次の開発段階では、Clojuescript/Reagent の使用を開始しています。基本的に、アトムに対して単一の操作を行う方法が必要であり、次のようなメソッドを思い付きました: (def app-state (r/atom {}))
基本的に、スワップは、必要なすべての操作が連鎖する関数を取得します。それは素晴らしいです。ただし、エラーを処理する方法を検討しています。エラー用に別のアトムが必要です。
エラーが発生した場合は、アプリの状態をスワップせずに、それをキャプチャしてエラーに追加します (アプリケーションは最後の安定した状態のままです)。そのため、チェーンからのスローと try cactch を使用します。
したがって、エラーがキャッチされ、@errors がそれを持っていることを期待します。しかし、現実は次のとおりです。
※見落としエラーあり
weather_app$core$change_title @ core.cljs?rel=14502666738018:59(匿名関数) @ core.cljs?rel=1450266738018:108executeDispatch @ react-with-addons.inc.js:3311SimpleEventPlugin.executeDispatch @ react-with-addons. inc.js:17428forEachEventDispatch @ react-with-addons.inc.js:3299executeDispatchesInOrder @ react-with-addons.inc.js:3320executeDispatchesAndRelease @ react-with-addons.inc.js:2693forEachAccumulated @ react-with-addons.inc. js:19430EventPluginHub.processEventQueue @ react-with-addons.inc.js:2900runEventQueueInBatch @ react-with-addons.inc.js:11217ReactEventEmitterMixin.handleTopLevel @ react-with-addons.inc.js:11243handleTopLevelImpl @ react-with-addons. inc.js:11329Mixin.perform @ react-with-addons.inc.js:18402ReactDefaultBatchingStrategy.batchedUpdates @ react-with-addons.inc.js:9669batchedUpdates @ react-with-addons.inc.js:16633ReactEventListener.dispatchEvent @ react-with-addons.inc.js:11423*