如何解决如何使用Expo Filesystem保存导入的JSON文件
我一直在与Expo合作开发React Native项目,该项目使用json文件存储本地数据。我像这样导入数据
df = df[df.columns.get_level_values(level=0).isin(mask.index[mask])]
我正在使用import data from '../database.json'
对导入的JSON进行更改(添加和删除)。当我关闭应用程序时,这些更改不是持久的,因为我无法弄清楚如何保存它们。我已经看过像这样使用expo-file-system库:
data.push(new_data)
这是通过查看API文档中的示例得出的。但是,这总是会抛出承诺拒绝,并且最终不会写入文件。你能指出我正确的方向吗?
此外,我是否应该以其他方式导入database.json,这样我就已经可以将其保存到uri中了。
解决方法
改为使用AsyncStorage。 react本机软件包已被弃用但可以使用,或者使用@ react-native-community / async-storage并将json转换为字符串(AsyncStorage仅可以存储字符串)
设置项目
import AsyncStorage from '@react-native-community/async-storage';
...
await AsyncStorage.setItem('myData',JSON.stringify(data))
获取项目
const data = await AsyncStorage.getItem('myData')
,
如果使用AsyncStorage,则仅存储少量数据。也许6mb或10 mb。
您可以使用expo fileSystem
import * as FileSystem from 'expo-file-system';
...
FileSystem.writeAsStringAsync(FileSystem.documentDirectory + 'database.json',data);
转换您的数据(将json类型转换为字符串),例如:
writeData = async () => {
var persons = ''
await axios.get(`http://192.168.0.48:4000/api/sql/student`)
.then(res => {
persons = res.data
})
await FileSystem.writeAsStringAsync(FileSystem.documentDirectory + `offline_queue_stored.json`,JSON.stringify(persons));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。