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(string)

trust(html)

fragment(attrs, children)

redraw()

censor(object, extra)

Опциональный API

stream()

Руководство

Содержание страницы

redraw() ​

Описание ​

Обновляет DOM после изменения данных в приложении.

Вам не нужно вызывать эту функцию, если данные изменяются в контексте обработчика событий, определенного в представлении Mithril.js, или после завершения запроса, выполненного с помощью m.request. Система автоматической перерисовки, основанная на m.redraw(), автоматически позаботится об этом.

Вам нужно вызывать эту функцию в колбэках setTimeout/setInterval/requestAnimationFrame или колбэках сторонних библиотек.

Сигнатура ​

m.redraw()

АргументТипОбязательныйОписание
returnsВозвращает: ничего

Статические методы ​

m.redraw.sync ​

m.redraw.sync()

АргументТипОбязательныйОписание
returnsВозвращает: ничего

Как это работает ​

Если колбэки выполняются вне Mithril.js, необходимо уведомить механизм рендеринга Mithril.js о необходимости перерисовки. Внешние колбэки могут быть колбэками setTimeout/setInterval/requestAnimationFrame, колбэками библиотек для работы с веб-сокетами, обработчиками событий в плагинах jQuery, колбэками сторонних XHR-запросов и т. д.

Чтобы запустить перерисовку, вызовите m.redraw(). Обратите внимание, что m.redraw работает только в том случае, если вы использовали m.mount или m.route. Если вы выполнили рендеринг с помощью m.render, вам следует использовать m.render для перерисовки.

m.redraw() всегда запускает асинхронную перерисовку, в то время как m.redraw.sync() запускает синхронную. m.redraw() привязан к window.requestAnimationFrame(). Таким образом, он обычно вызывается не чаще 60 раз в секунду. Он может работать быстрее, если у вашего монитора более высокая частота обновления.

m.redraw.sync() в основном предназначен для обеспечения корректного воспроизведения видео в iOS. Это поведение работает только в ответ на события, инициированные пользователем. С ним связано несколько ограничений:

  • Не следует вызывать m.redraw.sync() из метода жизненного цикла или метода view() компонента. Это приведет к непредсказуемому поведению и может вызвать ошибку.
  • m.redraw.sync(), вызванный из обработчика событий, может привести к изменению DOM во время всплытия события. В зависимости от структуры старого и нового деревьев DOM, событие может завершить фазу всплытия в новом дереве и вызвать не те обработчики, которые ожидались.
  • Он не подвергается троттлингу (ограничению частоты вызовов). При каждом вызове m.redraw.sync() немедленно вызывается m.render() для каждого корневого элемента, зарегистрированного через m.mount() или m.route().

В отличие от m.redraw.sync(), у m.redraw() нет этих ограничений. Его можно вызывать в любом месте кода.

Pager
Предыдущая страницаfragment(attrs, children)
Следующая страницаcensor(object, extra)

Выпущено на условиях лицензии MIT.

Авторские права (c) 2024 Mithril Contributors

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

Выпущено на условиях лицензии MIT.

Авторские права (c) 2024 Mithril Contributors