react-native - 如何在本地存储中存储和读取json文件的文件内容
问题描述
我有一个 json 文件:data.json
[
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
},
{
"userId": 1,
"id": 3,
"title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
"body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
},
{
"userId": 1,
"id": 4,
"title": "eum et est occaecati",
"body": "ullam et saepe reiciendis voluptatem adipisci\nsit amet autem assumenda provident rerum culpa\nquis hic commodi nesciunt rem tenetur doloremque ipsam iure\nquis sunt voluptatem rerum illo velit"
}
]
我想将文件内容保存在本地存储中,然后从本地存储中读取文件内容。所以尝试了以下方法:
import AsyncStorage from '@react-native-async-storage/async-storage';
import * as data from "../data.json"; // MY JSON FILE
const setLocalItem = async (data) => {
try {
const jsonValue = JSON.stringify(data)
await AsyncStorage.setItem('@storage_Key', jsonValue);
} catch (error) { }
};
const getLocalItem = async () => {
try {
const jsonValue = await AsyncStorage.getItem('@storage_Key')
console.log(jsonValue);
return jsonValue != null ? JSON.parse(jsonValue) : null;
} catch (e) {
// error reading value
console.log(e);
}
}
<>
<TouchableOpacity onPress={setLocalItem}>
<Text>Save file</Text>
</TouchableOpacity>
<TouchableOpacity onPress={getLocalItem}>
<Text>Get file</Text>
</TouchableOpacity>
</>
当我单击时Get file
,我进入null
我的控制台。我不知道我哪里错了。请帮忙
解决方案
您setLocalItem
接受一个data
参数,但您在没有参数的情况下调用它。解决它的一种方法是:
<TouchableOpacity onPress={() => setLocalItem(data)}>
<Text>Save file</Text>
</TouchableOpacity>
第二个选项,因为您已data
在文件顶部定义,所以不要在函数中隐藏名称setLocalItem
并采用 0 参数:
const setLocalItem = async () => {
try {
const jsonValue = JSON.stringify(data)
await AsyncStorage.setItem('@storage_Key', jsonValue);
} catch (error) { }
};
然后保留您的原件:
<TouchableOpacity onPress={setLocalItem}>
<Text>Save file</Text>
</TouchableOpacity>
推荐阅读
- javascript - 如何从子文件夹运行 gulpfile.babel.js(ES6) 任务?
- django - 布尔值作为复选框并保存表单
- c# - Console.Writeline(整数); 即使应该有小数,也打印没有小数的数字
- javascript - 反应导航不导航
- python - 如何通过python中标签的属性选择元素
- xamarin.forms - 带棱镜的 AutoWirePartialView 不起作用或使用不当?
- r - 出现最大值后一个月的剩余天数
- python - Atom 中的 Python:无法使用“as”语句导入库 [Ubuntu 16.04]
- jquery - jQuery .hover() 和 $(window).resize() 的奇怪行为
- r - rgl 3D 散点图 - 从第 4 维控制球体的大小(气泡图)