問題タブ [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 - Om app-state とアプリケーション構造
次のようなコンポーネントとサブコンポーネントを使用して、Om にメニューを表示しています。
私の質問は、(@app-state :location) を更新してメニューを正しく再レンダリングするにはどうすればよいですか?
上記のコードの更新:
動作しますが、ツリーは正しく更新されません。
私は om/update を使う必要があると思います! または om/transact! しかし、それらはカーソルを取り、メニューアイテムビューにある唯一のカーソルは、完全なアプリ状態ではなく、現在のメニューアイテムです。そのため、:location にアクセスできません。
これはどのように処理されますか?
可能であれば、当面は core.async とチャネルを避けたいと思います。
reactjs - 試薬 (または Om) の React の参照?
コンポーネントのレンダリング後に入力フィールドにフォーカスするなど、DOM の状態を変更するためにReact のRefsを使用すると便利な場合があります。ReagentまたはOmはこれを実装していますか、そうでない場合、これらのライブラリでこれを行う慣用的な方法は何ですか?
EDIT(以下の議論の後)。
this.getDOMNode
inの使用は、componentDidMount
この問題に対する一般的な解決策ではありません。コンポーネントがマウントされた後にのみ、物理 DOM 要素へのアクセスが許可されます。イベントをトリガーする場合など、render を呼び出すたびに、要素への一貫したアクセスが必要になる場合があります。それを行う方法は、参照を使用することです。
reactjs - om コンポーネントで core.async / ajax データを使用する
私は現在 om を試しており、外部データを読み込んでコンポーネントに表示しようとしています。
私の詳細コンポーネント:
( fetch-something
API からデータを取得しています)。
要約すると、detail-component は、マウントする前にデータをフェッチし、それを にアタッチしてapp
ビルドしanother-component
ます。another-component
次に、そのデータから説明を取り出して表示します。
ただし、実行するとUncaught TypeError: Cannot read property 'call' of null
、説明にアクセスしようとしているところに到達します。これは、 がビルドされた時点another-component
で、データがまだ存在せず、失敗していることを示しています。
データが利用可能になったときにアプリをビルドするように om に指示するにはどうすればよいですか? または、いくつかのnil?
チェックを組み込む必要がありますか?
clojure - om/transact を使用してベクトルを更新しようとすると、om ClojureScript ref-cursor エラーが発生する
カーソルを更新しようとすると、次のエラーが表示されます。
アプリケーション状態のコメント データ ベクトルを指すために ref-cursor を使用しています。
ここで、ユーザーが入力コンポーネントの入力を介してデータを送信したときに、このカーソルを更新したいと思います。(let [foo (->> comments)] を使用して、render-state 内のカーソルを参照します。それをユーザー送信を処理する関数呼び出しに渡し、このベクトルに項目をもう 1 つ追加したいと思います。
ただし、om/transact を作成すると! 上記のエラーが表示されます。
reactjs - ClojureScript、Om、および React.js でインライン スタイル文字列を使用する
ClojureScript アプリケーションで次の Om スニペットを使用したいと考えています。
これは「爆発」し、ページ全体のレンダリング全体を停止します!
その理由は、React.js がスタイルを処理する方法に関係していると思います。インライン スタイルによると:
React では、インライン スタイルは文字列として指定されません。代わりに、キーがスタイル名の camelCased バージョンであり、値がスタイルの値 (通常は文字列) であるオブジェクトで指定されます。
この問題を回避するための良い方法は何ですか? 私は通常、インライン スタイルを使用するのは好きではありませんが、この例を機能させる方法を知りたいです。
clojurescript - will-mount のトランザクション app-state は効果がありません
この質問は、例で最もよく説明できます。
次に、次のコードを貼り付けます (内core.cljs
)
のコードwill-mount
は実際に実行されていprintln
ます。関数をドロップすると、それが表示されます。明確でないのは、レンダリング ループが 1 回だけ呼び出される理由です。一方、をブロックom/update!
内にラップすると、期待どおりに機能します。go
will-mount
問題は、アプリの状態を更新したため、新しいレンダリング ループがトリガーされないのはなぜですか? 必要なときにブロックを使用go
するのが好きですが、この単純な例をブロックでラップする必要がある理由がわかりません。
clojurescript - Clojurescriptを使用してテキストをDOM要素に変換する方法は? (そしてオム?)
ClojureScript/Om アプリには、DOM と HTML の文字列があります。
HTML の文字列を、DOM に挿入できる要素に変換するにはどうすればよいでしょうか?
私はヒッコリーで HTML を解析する道を歩み始め、ヒッコリー データを処理して DOM 要素を作成することを計画していますが、見落としているもっと簡単な方法があるに違いないと思います。
(HTML を検証する必要はありません。安全で十分有効であると想定できます。)