Предварительное исследование жизненного цикла mpvue

внешний интерфейс Vue.js mpvue

Недавно я использовал mpvue для создания и разработки небольшого программного проекта для компании, и на выходных я потратил некоторое время на изучение последовательности вызовов жизненного цикла компонента Vue.js и жизненного цикла страницы апплета.

текст

подготовить знания

Сначала официальная схема жизненного цикла mpvue:

Есть только один апплетApp 实例, соответствующий проекту mpvueApp.vueКонтент внутри, вся страница общая, mpvue это экземпляр и组件(Компоненты включают:tabBar 页,普通页,一般组件) добавляет некоторые методы жизненного цикла Vue.js.

Конечно, эти жизненные циклы неApp 实例а также组件в целом.

между страницами

экземпляр приложения

Его жизненный цикл всегда выполняется первым в следующем порядке:beforeCreate,created,onLaunch,beforeMount,mounted,onShow(В следующих примерах эта часть содержания опущена).

страница

App.vue
   |--- Page0.vue(默认打开页面)

Page0.vueВыполнить последовательно:

  • beforeCreate
  • created
  • onLoad
  • onShow
  • onReady
  • beforeMount
  • mounted

несколько страниц

// app.json(注意顺序)
{
    pages: [
        '/pages/Page0/main',
        '/pages/Page2/main',
        '/pages/Page1/main',
    ]
}

// 页面结构
App.vue
   |--- Page0.vue(默认页面)
   |--- Page1.vue
   |--- Page2.vue

Регистрация на встречу по запуску небольшой программыapp.jsonизpagesВсе страницы, определенные в свойстве, и активировать каждую страницуbeforeCreate,created,а также这对函数Порядок выполнения зависит от страницы, на которойpagesпорядок в свойствах.

Чтобы запустить апплет, вы должны открыть домашнюю страницу (эта домашняя страница должна быть вpages), страницыonLoad~mountedнаходится на последней страницеcreatedПосле этого выполните:

Переход между страницами (также называемый переключением маршрута)

Разделение страницы:tabBar 页а также普通页Пропускает между двумяограничение:

  • navigationTo, redirectTo может открывать только страницы без tabBar
  • switchTab может открывать только страницы tabBar

Все триггеры в таблице по порядку,-Тот, что в начале, означает, что он срабатывает только при первом входе.+Начало означает, что он будет срабатывать при повторном входе.Если нет символа, он будет срабатывать при каждом входе.

1.open-type="navigate":
Текущая страница целевая страница триггер текущей страницы триггер целевой страницы
нормальная страница нормальная страница onHide onLoad
onShow
onReady
beforeMount
+ beforeUpdate
mounted
нормальная страница страница tabBar onUnload - onLoad
onShow
- onReady
- beforeMount
- mounted
страница tabBar нормальная страница onHide onLoad
onShow
onReady
beforeMount
+ beforeUpdate
mounted
страница tabBar страница tabBar onHide - onLoad
onShow
- onReady
- beforeMount
- mounted
2.open-type="redirect":
Текущая страница целевая страница триггер текущей страницы триггер целевой страницы иллюстрировать
нормальная страница нормальная страница onUnload onLoad
onShow
onReady
beforeMount
+ beforeUpdate
mounted
нормальная страница страница tabBar не поддерживается
страница tabBar нормальная страница onUnload onLoad
onShow
onReady
beforeMount
mounted
страница tabBar страница tabBar не поддерживается
3.open-type="reLaunch":
Текущая страница целевая страница триггер текущей страницы триггер целевой страницы
нормальная страница нормальная страница onUnload onLoad
onShow
onReady
beforeMount
+ beforeUpdate
mounted
нормальная страница страница tabBar onUnload + onUnload
onLoad
onShow
onReady
beforeMount
+ beforeUpdate
mounted
страница tabBar нормальная страница onUnload onLoad
onShow
onReady
beforeMount
+ beforeUpdate
mounted
страница tabBar страница tabBar onUnload onLoad
onShow
onReady
beforeMount
+ beforeUpdate
mounted

Если вы повторно запустите текущую страницу, страница, поддерживаемая платформой апплета в виде стека, будет последовательно извлекаться из стека и запускать onUnload страницы, а затем запускать текущую страницу:

  • onLoad
  • onShow
  • onReady
  • beforeMount
  • beforeUpdate
  • mounted
4.open-type="navigateBack", нужно сотрудничатьdeltaиспользование атрибута, он ведет себя, как описано нижеверхняя левая кнопка назад.
  • дельта превышает页面栈количество, вернуться на первую страницу
  • Когда дельта
5.tabBar нажмите переключатель
триггер текущей страницы триггер целевой страницы
onHide - onLoad
onShow
- onReady
- beforeMount
- mounted
6.верхняя левая кнопка назад

Эта кнопка только普通页существуют в

триггер текущей страницы триггер целевой страницы
onUnload onShow

наконец

onLaunchа такжеonErrorсуществует только вApp 实例, другие страницы или компоненты заменяютonLaunchдаonLoad,нетonError

Исходный код демоЗдесь я найду время для изучения связи между их жизненными циклами и асинхронной обработкой данных, когда на странице используются общие компоненты.