Что запускается первым - конструктор или ionView ...? - PullRequest
0 голосов
/ 31 января 2019

Что в Ionic Framework работает первым: конструктор или ionViewDidEnter?Это гарантировано?

А как насчет конструктора против каждого из событий жизненного цикла страницы других событий?Есть ли гарантия того, что сначала будет запущен конструктор или какое-либо из событий жизненного цикла ионной страницы?

1 Ответ

0 голосов
/ 01 февраля 2019

Метод constructor () не является функцией Ionic, это особенность класса ES6 (Typescript в большинстве случаев).Таким образом, Ionic Framework не вызывает метод конструктора, а JavaScript-движок обязан вызывать конструктор.Итак, это первое событие жизненного цикла, которое запускается при инициализации страницы.

Теперь, чтобы ответить на ваши вопросы

В Ionic Framework, что запускается первым, это конструктор или ionViewDidEnter?Это гарантировано?

Если страница не загружена в память, то всегда вызывается конструктор первым.Далее следуют другие события жизненного цикла, предоставленные Ionic (см. Рисунок, вставленный ниже, чтобы увидеть порядок событий).

Если страница уже загружена в память, конструктор вызываться не будет.В этом случае ionViewCanEnter будет первым событием, которое будет запущено, затем ionViewWillEnter даже будет запущено, а затем будет запущено событие ionViewDidEnter.

Примечание : ionViewDidLoad запускается только один раз, когда страница загружается в память (как конструктор)

Следующий вопрос,

А как насчет конструктора против каждого из событий жизненного цикла страницы других событий?Есть ли какая-либо гарантия, будет ли сначала запускаться конструктор или какое-либо из событий жизненного цикла ионной страницы?

Как я упоминал ранее, конструктор всегда будет вызываться первым, если страница не была загружена.Если он уже загружен, конструктор вызываться не будет.

Ниже на диаграмме показан порядок событий жизненного цикла Ionic Page.

enter image description here

Небольшое объяснение для каждого события.

ionViewCanEnter

Это событие инициируется Ion Nav Guard перед входом в вид (страница), позволяет вам контролировать доступ к представлению или нет (возвращая true или false).Если страница уже загружена в память, это будет первое событие, которое будет запущено.Если нет, этот метод будет запущен после конструктора.

ionViewDidLoad

Запускается только тогда, когда представление сохраняется в памяти.Это событие НЕ запускается при входе в представление, которое уже кэшировано.Разница между конструктором и IonViewDidLoad заключается в том, что конструктор должен быть как можно более тонким, а это означает, что вы должны только инициализировать переменные вашего класса.Это связано с тем, что выполнение вызовов REST API и инициализация данных в конструкторе приводят к замедлению работы приложения, поскольку создание объекта требует времени.Принимая во внимание, что в событии ionViewDidLoad вы можете быть уверены, что все введенные переменные и зависимости доступны для использования, и это также хорошее место для выполнения вызовов REST API и инициализации данных.

ionViewWillEnter

Это событие вызывается при входе на страницу до того, как она станет активной.Это событие можно использовать для задач, которые должны выполняться каждый раз при вводе представления (например, Обновление таблицы).

ionViewDidEnter

Запускается при входе на страницу, после того как она становится активной страницей.

ionViewCanLeave

Это событие также является защитным устройством, как ionViewCanEnter.Это событие вызывается перед тем, как покинуть вид, оно позволяет вам контролировать, можно ли оставить вид или нет.

ionViewWillLeave

Это событиеуволен, когда вы покидаете страницу.На этом этапе ваша страница все еще находится в активном состоянии, но она была поставлена ​​в очередь для удаления, и вы больше не можете предотвратить удаление страницы.

ionViewDidLeave

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

ionViewDidUnload

Запускается, когда представление будетполностью удален (после выхода из кэшированного представления).Этот метод может использоваться для освобождения ресурсов, которые больше не требуются

Ссылка : https://blog.ionicframework.com/navigating-lifecycle-events/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...