これは Mithril 固有の質問ではないかもしれませんが、一般的な VM DOM 差分です。ページを「再描画」しているときに、新しいイベント ハンドラーを追加したり、イベント ハンドラーを削除したり、「onclick」などのイベントに関連付けられたイベント ハンドラーを変更したりしているときに、VM DOM diffing が変更を検出しないようです。 「実際の」DOM の再レンダリングを明示的に強制します。
これらの状況を処理するための適切なパターンはありますか。
これは Mithril 固有の質問ではないかもしれませんが、一般的な VM DOM 差分です。ページを「再描画」しているときに、新しいイベント ハンドラーを追加したり、イベント ハンドラーを削除したり、「onclick」などのイベントに関連付けられたイベント ハンドラーを変更したりしているときに、VM DOM diffing が変更を検出しないようです。 「実際の」DOM の再レンダリングを明示的に強制します。
これらの状況を処理するための適切なパターンはありますか。
特に Mithril では、ハンドラー関数が完了した後、onclick
すべてのon
ハンドラーが自動的に再描画をトリガーします。ただし、onclick ハンドラーが実際の DOM 操作 (jQuery やアニメーション スイートなどのサードパーティ ライブラリ) を行う場合は、config
次の属性
を使用する必要があります。
ページがレンダリングされた後に呼び出されます。
イベント ハンドラーの変更に関しては、レンダリング サイクルのいつ変更を行うかによって異なります。私はいくつかのコードを見る必要があります。それほど不便でなければ、 redraw を手動で呼び出すことは悪いことではありません。再描画戦略が「diff」の場合、ペナルティはかかりません。
最後に、独自のイベントを導入する場合は、イベント ハンドラーで m.startComputation/m.endComputation を使用することを検討してください。これらはより細かい粒度制御を提供し、再描画が自動的に呼び出されます。 http://lhorie.github.io/mithril/mithril.computation.html