React Native: Как вызвать метод только при установке приложения? - PullRequest
0 голосов
/ 03 сентября 2018

В моем проекте я использую область как базу данных для сохранения некоторых данных. Схема данных разобрана ниже;

let aschema = new Realm({
    schema: [{
    name: 'Announcement',
    properties: {
      id: 'string',
      title: 'string',
      date: 'date',
      content: 'string',
    }
    }],
    schemaVersion: 5
});

Я получаю данные с адреса и сохраняю их в таблицу объявлений с помощью функции loadAnnouncements ;

export async function loadAnnouncements() {
    url = 'http://192.168.1.xx/test.html'
    const response = await fetch(url);
    const htmlString = await response.text();
    const $ = cio.load(htmlString);
    const announcements = $("#tab tr")
                             .map((_, tr) => ({
                                 id: $("h5 a",tr).attr("href"),
                                 title: $("h5 a",tr).text(),
                                 ...
                              }));
    for(let i = 0; i < announcements.length; i++){
        announcement = new AnnouncementModel(announcements[i].id, announcements[i].title, ...);
        AnnouncementService.save(announcement);
    }
return announcements;
}

Для каждого нового объявления должно быть отправлено уведомление. Таким образом, старые объявления должны быть заполнены один раз после установки, например, создание базы данных области.

Я думаю, что проблема ясна, как я могу выполнить функцию один раз после установки или одновременно?

1 Ответ

0 голосов
/ 04 сентября 2018

Вы можете определить схему appInitializer и добавить свойство messagesFetched со значением по умолчанию false. На странице-заставке проверьте состояние объявленияFetched, если оно ложно, затем вызовите loadAnnouncements (), и в случае успеха установите для параметра messageFetched значение true.

 const appInitializer = {
   name: 'appInitializer',
   properties: {
     announcementFetched:{type: 'bool', default: false},
   }
}
...