Хранение Ionic 3 экономит на одной странице, но не на следующей - PullRequest
1 голос
/ 11 мая 2019

Я создал приложение Ionic 3, которое хранит строку в хранилище.Я использую плагин SQLlite и вижу, что строка правильно хранится на странице, потому что сразу после того, как я установил значение, я делаю .get и могу убедиться, что ключ / значение совпадает.

this.storage.set('token', 'testing')
        .then(() => {
          this.storage.get('token')
            .then((token) => {
              console.log(token); //I get 'testing' as I should
            })
        });

Когда я перехожу на следующую страницу в Ionic, я пытаюсь извлечь ключ из хранилища, но получаю нулевое значение.

На следующей странице у меня есть следующий код:

this.platform.ready()
.then(() => {
  this.storage.get('token')
  .catch(err => {
  })
  .then((token) => {
    console.log(token); //I get null here instead of 'testing'
  });
})

В моем файле app.modules.ts я добавил import { IonicStorageModule } from '@ionic/storage'; и IonicStorageModule.forRoot() при импорте.

1 Ответ

1 голос
/ 11 мая 2019

this.platform.ready() возвращает Обещание, поэтому оно разрешается или отклоняется только один раз, и я подозреваю, что вы уже посещали эту страницу до того, как set('token', поэтому страница добавляется в стек (когда вы посещаете страницу в Ionic, она добавляет ее всоставлять таким образом, что при повторном посещении его не нужно инициализировать снова), а при повторном посещении this.platform.ready() больше не срабатывает.Если вам нужно проверить платформу, вы можете:

if (this.platform.is('cordova')) { }

...