Last updated
Last updated
Props:
include
— строка, регулярное выражение или массив. Только компоненты с совпадающими именами будут кешироваться.
exclude
— строка, регулярное выражение или массив. Все компоненты с совпадающими именами не будут кешироваться.
max
- число. Максимальное количество кэшируемых экземпляров.
Использование:
Оберните динамические компоненты тегом <keep-alive>
, чтобы кешировать экземпляры интерактивных компонентов вместо того, чтобы их уничтожать. Так же, как и <transition>
, <keep-alive>
— абстрактный компонент: при отрисовке он не превращается в элемент DOM, и не показывается в цепочке родителей компонента.
Когда компонент, расположенный внутри <keep-alive>
показывается или скрывается, вызываются его хуки жизненного цикла activated
или deactivated
соответственно.
В версии 2.2.0+,
activated
иdeactivated
будет срабатывать для всех вложенных компонентов внутри<keep-alive>
дерева.
В основном используется для сохранения состояния компонента, чтобы избежать повторной отрисовки.
Обратите внимание, <keep-alive>
предназначен для случая, когда есть один прямой дочерний компонент, который переключается. Он не будет работать, если в нём есть v-for
. При наличии несколько дочерних компонентов отображаемых по условию, как указано выше, <keep-alive>
требует, чтобы отображался только один дочерний компонент в один момент времени.
include
и exclude
Входные параметры include
и exclude
позволяют организовать условное кеширование компонентов. Оба параметра можно указать в виде строки со списком имён компонентов через запятую, регулярным выражением или массивом:
Проверяется сначала собственное значение опции name
компонента, а в случае его недоступности — имя, указанное при локальной регистрации (ключ в опции components
компонента-родителя). Анонимные компоненты таким образом проверить не получится.
max
Максимальное количество экземпляров для кэширования. По достижению этого лимита, экземпляр закэшированного компонента, который дольше всего не использовался будет уничтожен перед созданием нового экземпляра.
<keep-alive>
не работает с функциональными компонентами, так как у них отсутствуют экземпляры.