Недавно я использовал 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
Исходный код демоЗдесь я найду время для изучения связи между их жизненными циклами и асинхронной обработкой данных, когда на странице используются общие компоненты.