Skip to content
Mithril.js 2
Main Navigation ガイドAPI

日本語

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
한국어
Italiano
Polski
Türkçe
čeština
magyar

日本語

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
한국어
Italiano
Polski
Türkçe
čeština
magyar

外観

Sidebar Navigation

API

コア API

m(selector, attributes, children)

render(element, vnodes)

mount(root, component)

route(root, defaultRoute, routes)

request(options)

parseQueryString(string)

buildQueryString(object)

buildPathname(object)

parsePathname(文字列型)

trust(html)

fragment(attrs, children)

redraw()

censor(object, extra)

オプション API

stream()

ガイド

このページの内容

redraw() ​

Description ​

アプリケーションのデータ層に変更があった後、DOM を更新します。

Mithril.js のビュー内で定義されたイベントハンドラーの実行コンテキストでデータが変更された場合、または m.request 使用時のリクエスト完了後にデータが変更された場合は、m.redraw() を明示的に呼び出す必要はありません。自動再描画システム(m.redraw() を基盤としています)が自動的に処理します。

setTimeout、setInterval、requestAnimationFrame のコールバック、またはサードパーティライブラリのコールバック内では、m.redraw() の呼び出しが必要になる場合があります。

Signature ​

m.redraw()

引数型必須説明
returns戻り値なし

静的メンバー ​

m.redraw.sync ​

m.redraw.sync()

引数型必須説明
returns戻り値なし

How it works ​

Mithril.js の管理外で実行されるコールバックの場合、再描画が必要であることを Mithril.js のレンダリングエンジンに通知する必要があります。外部コールバックの例としては、setTimeout、setInterval、requestAnimationFrame のコールバック、WebSocket ライブラリのコールバック、jQuery プラグインのイベントハンドラー、サードパーティの XHR リクエストのコールバックなどが挙げられます。

再描画をトリガーするには、m.redraw() を呼び出します。m.redraw は m.mount または m.route でコンポーネントがマウントされている場合にのみ機能することに注意してください。m.render 経由でレンダリングした場合は、m.render を使用して再描画する必要があります。

m.redraw() は常に非同期的な再描画をトリガーしますが、m.redraw.sync() は同期的な再描画をトリガーします。m.redraw() は window.requestAnimationFrame() に関連付けられているため、通常は 1 秒間に最大 60 回まで実行されます。ディスプレイのリフレッシュレートが高い場合は、より頻繁に実行されることがあります。

m.redraw.sync() は、主に iOS でのビデオ再生を機能させるために設計されています。これはユーザー操作によってトリガーされたイベントへの応答時のみ正常に機能します。これにはいくつかの注意点があります。

  • ライフサイクルメソッド またはコンポーネントの view() メソッドから m.redraw.sync() を呼び出すべきではありません。この場合、動作は未定義となります (可能な場合はエラーがスローされます)。
  • イベントハンドラーから呼び出された m.redraw.sync() は、イベントがバブリングしている間に DOM が変更される可能性があります。古い DOM ツリーと新しい DOM ツリーの構造によっては、イベントが新しいツリー上でバブリングフェーズを終了し、意図しないハンドラーが実行される可能性があります。
  • スロットリングは行われません。m.redraw.sync() を 1 回呼び出すと、m.mount() または m.route() で登録されたルートごとに、即座に 1 回の m.render() 呼び出しが発生します。

m.redraw() にはこれらの問題はありません。どこからでも安全に呼び出すことができます。

Pager
前のページfragment(attrs, children)
次のページcensor(object, extra)

MITライセンス の下で公開されています。

Copyright (c) 2024 Mithril Contributors

https://mithril.js.org/redraw.html

MITライセンス の下で公開されています。

Copyright (c) 2024 Mithril Contributors