如何在非字符串的React Native中本地存储数据
How to store data locally in React Native that is not a string
我正在寻找一种在React Native中本地存储对象和数据数组的方法。如何做到这一点?查看AsyncStorage的api:
staticsetItem(键:字符串,值:字符串,回调?:?(错误:?错误)=>无效)
设置键的值,并在完成时调用回调,如果有错误,还会调用Error。返回Promise对象
如何在React Native中本地存储对象和数组?
JSON.stringfy({})可以用于将数据结构转换为字符串。
然后使用JSON.parse()将字符串转换回原始数据结构。
你可以为此创建一个很好的服务,在整个应用程序中消除一些样板代码。在下面的示例中,我使用了React Native内置的AsyncStorage API作为"持久"存储工具。根据自己的喜好进行调整。
使用React Native的示例
使用JSON API将对象存储在持久存储中,即React Native的AyncStorage,然后检索该值,并将其输出到Text元素中。未测试。
Storage.js文件-请注意,此示例对象API围绕ReactNative的AsyncStorage API提供了一个子集包装器,您可以对其进行调整,以允许设置多个键,而不是一次设置一个键。
//./storage.js
const Storage = {
getItem: async function (key) {
let item = await AsyncStorage.getItem(key);
//You'd want to error check for failed JSON parsing...
return JSON.parse(item);
},
setItem: async function (key, value) {
return await AsyncStorage.setItem(key, JSON.stringify(value));
},
removeItem: async function (key) {
return await AsyncStorage.removeItem(key);
}
};
React Native组件
//Usage...
import React, {Component} from "react";
import { View, Text } from "react-native";
import Storage from "./storage";
class Foo extends Component {
constructor (props) {
super(props);
this.state = {
greeting: ""
};
}
async componentDidMount () {
await Storage.setItem("someObj", {value: "bar", id: 1});
let obj = await Storage.getItem("someObj");
this.setState({
greeting: obj.value // Will be "bar"
});
}
render () {
return (
<View>
<Text>{this.state.greeting}</Text>
</View>
);
}
}
原始示例:
正如我最初在手机上回答的那样,我最初确实使用了HTML5 localStorage api作为例子,它打字更快(而且很冷。
var StorageService = function () {};
StorageService.prototype.get = function (key) {
return JSON.parse(window.localStorage.getItem(key));
};
StorageService.prototype.set = function (key, value) {
return window.localStorage.setItem(key, JSON.stringify(value));
};
最近我写了pleex,你可以看看它https://github.com/E-RROR/pleex.您可以将数据保存在纯json中,或者创建具有类型检查功能的模式等等。感谢
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 如何以特定格式存储数据?在WYSWYG中
- web浏览器中的离线应用程序存储数据并在之后上传
- 在firebase(web)上存储数据时出现问题
- 使用会话Javascript存储数据
- 通过CK编辑器获取值和存储数据
- 存储数据的最佳方式是什么,以便与jquery一起使用
- 如何在网页之间存储数据
- jQuery 设置和获取下拉列表和输入的本地存储数据
- 如何通过HTML 5 javascript在本地ipad / iPhone上存储数据,并在设备上线时提交
- 使用 Cookie 存储数据
- 如何将本地存储数据提交到 Django
- 如何在循环jQuery中的数组中存储数据
- 正在从表行中删除本地存储数据
- 在web应用程序中存储数据
- 自动将jqgrid滚动到具有存储数据的单元格的当前日期列和闪烁效果
- 如何将复选框呈现为从本地存储数据中选中的复选框
- 如何使用Ajax检索和存储数据
- 方法存储数据,直到浏览器关闭
- 如何在redux sagas完成之前通过meta标签加载初始存储数据