【问题标题】:React Native: How to call a method only on installation of an app?React Native:如何仅在安装应用程序时调用方法?
【发布时间】:2018-09-03 20:52:25
【问题描述】:

在我的项目中,我使用领域作为数据库来保存一些数据。数据架构如下图;

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

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

我想问题已经很清楚了,如何在安装后或同时执行一次功能?

【问题讨论】:

标签: javascript database reactjs react-native realm


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 2021-07-10
    • 1970-01-01
    相关资源
    最近更新 更多