keep-alive с динамическими компонентами
Last updated
Was this helpful?
Last updated
Was this helpful?
Демки .
Ранее мы использовали атрибут is
для переключения компонентов в интерфейсе вкладок:
Но иногда, при переключении между компонентами, вы хотите сохранить их состояния или избежать повторной отрисовки по соображениям производительности. Например, когда немного доработаем наш интерфейс с вкладками:
Вы можете заметить, что если выбрать запись, переключиться на вкладку Archive, затем переключиться обратно на Posts, то больше не будет показываться выбранная запись. Это связано с тем, что каждый раз, когда вы переключаетесь на новую вкладку, Vue создаёт новый экземпляр currentTabComponent
.
Пересоздание динамических компонентов обычно является полезным поведением, но в нашем случае, мы хотим чтобы экземпляры компонентов вкладок кэшировались после их создания в первый раз. Для решения этой проблемы мы можем обернуть наш динамический компонент в элемент <keep-alive>
:
Посмотрите на результат ниже:PostsArchive
Теперь вкладка Posts управляет собственным состоянием (выбранной записью) даже когда не отображается. Посмотрите для полного примера кода.