首页 > 解决方案 > React Native:如何仅在安装应用程序时调用方法?

问题描述

在我的项目中,我使用领域作为数据库来保存一些数据。数据模式如下所示;

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;
}

对于每个新公告,应推送通知。因此,旧公告应该在安装后像创建领域数据库一样填充一次。

我认为问题很清楚,如何在安装后或同时执行一次功能?

标签: javascriptdatabasereactjsreact-nativerealm

解决方案


您可以定义模式 appInitializer 并添加一个默认值为 false 的属性announcementFetched。在您的启动页面中检查announcementFetched 的状态是否为假,然后调用loadAnnouncements() 并在成功时将announcementFetched 设置为true。

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


推荐阅读