javascript - 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;
}
对于每个新公告,应推送通知。因此,旧公告应该在安装后像创建领域数据库一样填充一次。
我认为问题很清楚,如何在安装后或同时执行一次功能?
解决方案
您可以定义模式 appInitializer 并添加一个默认值为 false 的属性announcementFetched。在您的启动页面中检查announcementFetched 的状态是否为假,然后调用loadAnnouncements() 并在成功时将announcementFetched 设置为true。
const appInitializer = {
name: 'appInitializer',
properties: {
announcementFetched:{type: 'bool', default: false},
}
}
推荐阅读
- intellij-idea - IntelliJ 未找到 JavaFX
- python - 如何在 python 中使用单引号格式化 SQL where 子句参数?
- powershell - 将 Get-NetTCPConnection 的输出写入数组 - 无输出
- mysql - 如何更改或交换与一列相关的值?
- sql - 嵌套事务和@@trancount 计数(70-761 练习题的问题)
- plot - 不同的 x 轴范围系统 GLE 中的图表
- .net-core - 在 HeroCard 中发送 CardActions 作为欢迎信息并直接进入相应的对话框
- .net-core - 如何在同一个项目中创建具有 Angular7 + WebAPI + AzureAD 的 .NET Core 应用程序
- python - 如何将 Ansible 模块 wait_for 与循环一起使用?
- php - PHP foreach 没有遍历嵌套数组