我正在开发一个react原生应用程序,我想要数据持久性。异步存储工作正常,但问题是我初始化了组件中的键"servers",并调用componentDidMount函数中的setItem函数。现在,正因为如此,每次我终止应用程序并再次运行它时,上一个会话中的所有数据都会被删除,因为组件安装时会重置"服务器"密钥。我理解为什么这会导致问题,所以我想知道我应该在哪里设置代码中的密钥,以便在每次安装组件时不会重置。
这是我在componentDidMount中调用的函数。这是在异步存储中声明密钥的唯一方法,对吗?因为如果没有它,我将无法调用getItem。
const save = async () => {
try {
server_list = await AsyncStorage.setItem('server_list', JSON.stringify({servers: []}));
}
catch (e){
console.log("Failed to load")
}
}
只要server_list键下没有数据,就可以通过填充AsyncStorage来实现这一点。
这看起来像这样:
setServerList = async (value) => {
try {
const serverList = await AsyncStorage.getItem('server_list');
if(serverList === null) {
await AsyncStorage.setItem('server_list', value)
}
} catch(e) {
// save error
}
console.log('Done.')
}
你仍然可以在componentDidMount中调用它,你的服务器列表将不再被覆盖