我一直在用Expo做一个React Native项目,它使用JSON文件来存储本地数据。我正在导入数据,如import data from '../database.json'
我正在使用data.push(new_data)
对导入的JSON进行更改(添加和删除)。当我关闭应用程序时,这些更改不是持久的,因为我不知道如何保存它们。我已经看过如何使用Linux文件系统库:
import * as FileSystem from 'expo-file-system';
...
FileSystem.writeAsStringAsync(FileSystem.documentDirectory + 'database.json', data);
这是通过查看API文档中的示例得出的。然而,这总是抛出promise拒绝,并没有结束写入文件。你能给我指出正确的方向吗?
另外,我应该以不同的方式导入database.json,这样我就已经有了保存它的uri了吗?
5条答案
按热度按时间xjreopfe1#
文档中没有给予一个在promise中返回props的例子,所以我忽略了它比我愿意承认的时间更长。我真的致力于弄清楚这一点,这样我就可以使用Expo解决方案,完全错过了返回Promise的方法,所以希望这可以为将来的人节省大量的时间。😅
o3imoua42#
请改用AsyncStorage。react native包已被弃用,但可以工作,或者使用@react-native-community/Async-storage并将json转换为字符串(AsyncStorage只能存储字符串)
设置项目
获取项目
disho6za3#
我发现@JayMax的回答非常有用,但它只适用于Android。在iOS上,您需要做的就是使用
Sharing.shareAsync
,然后您可以将数据保存到文件中。请看这个例子:czq61nw14#
如果你使用AsyncStorage,它只存储小数据。可能是6MB或10MB。
您可以使用expo fileSystem
转换你的数据(类型json到字符串),例如:
gjmwrych5#
#1.如果JSON文件在您的项目文件夹(PC/笔记本电脑)中
#2.如果JSON文件在手机中