問題タブ [function-binding]
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.
reactjs - React レンダリング ループ内で反復ごとのバインドを回避する
ファイルのリストをレンダリングする React コンポーネントがあります。リストが非常に長くなる場合があり、この場合、UI の観点からはページネーションが理想的ではないため、ファイルのリストは再レンダリング中 (たとえば、ファイルをドラッグ アンド ドロップして並べ替えるとき) に非常に遅くなります。
速度低下の原因の 1 つは、ファイルごとに 1 回実行されるループに、いくつかのbind()
呼び出しがあることです。
これらのバインドは、ドラッグ アンド ドロップ ハンドラーがどのファイルがドラッグされ、どこにドロップされているかを認識するために必要です。これらすべてのバインドが数百のファイルごとに 1 回実行されるため (結果の要素が最適化され、実際にはレンダリングされない場合でも)、処理が少し遅くなっても不思議ではありません。
各反復で各関数に一意のバインドを作成することなく、必要な反復ごとのデータをこれらの関数に渡すために、これを行うためのより良い方法があるかどうか疑問に思っています。
私自身の回答として投稿する解決策が 1 つありますが、この解決策が良いか悪いか、および欠点があるかどうかについてフィードバックをいただければ幸いです。
javascript - 読み込まれた ajax コンテンツにクリック イベントをバインドする
ajax を介してコンテンツをロードし、それらのコンテンツに対していくつかのクリック イベントを実行しようとしています。
したがって、基本的には、最初にコンテンツ(この場合はボタン)をロードしてから、それらにいくつかのクリックイベントを適用したいと考えています。
したがって、最初にコンテンツをロードしてからクリックイベントを適用する目的でコールバックを使用していますが、ここではコールバック関数の後にコンテンツがロードされるという問題があり、これは望ましくありません。ロードしたいコンテンツは最初にコールバック関数を実行しますが、この問題を解決するにはどうすればよいですか?
今までこれを達成するために、私は次のコードを持っています。
私は次のコードを持っていますfood.php
:
// findWeek
関数 ------ ボタンをロードするための AJAX リクエスト ------:
// fun
関数はコールバックfindWeek()
関数であり、関数がコンテンツをロードするときにこれが実行されると想定しています。つまりstart.php
、これらのボタンを挿入するページから必要なボタンを次の div 内にロードしますfood.php
。
その後、ロードされたボタンをクリックできるようにしたいと思いますdiv
。
そのため、私はfun()
次のような機能を持っています。
注:.dayBtns
ロードされたボタンのクラスを定義しました。
問題は、関数の実行後にコンテンツが読み込まれることです。データが読み込まれないまで関数が実行されないfun()
ように制限するにはどうすればよいですか?fun()
助けてください、ありがとう!