react native之使用AsyncStorage 进行数据持久化存储
新建AsncStorageDemoPage.js
import React, {Component} from 'react';
import {
StyleSheet,
View,
Text,
Button,
TextInput,
AsyncStorage,
} from 'react-native';
const KEY="save_key";
export default class AsncStorageDemoPage extends Component {
constructor(props){
super(props);
this.state={
showText:''
}
}
render(){
const {navigation} = this.props;
return (
<View style={styles.container}>
<Text>'FetchDemoPage'</Text>
<TextInput
style={styles.input}
onChangeText={text => {
this.value = text;
}}
/>
<View style={styles.input_container}>
<Text onPress={()=>{
this.doSave();
}}>存储
</Text>
<Text onPress={()=>{
this.doRemove();
}}>删除
</Text>
<Text onPress={()=>{
this.getData();
}}>读取
</Text>
</View>
<Text>
{this.state.showText}
</Text>
</View>
);
}
doSave(){
//方式1
AsyncStorage.setItem(KEY,this.value,error=>{
error && console.log(error.toString());
});
// //方式2
// AsyncStorage.setItem(KEY,this.value)
// .catch(error=>{
// error && console.log(error.toString());
// });
// //方式3
// try{
// await AsyncStorage.setItem(KEY,this.value);
// }
// catch(error){
// error && console.log(error.toString());
// }
}
doRemove(){
//方式1
AsyncStorage.removeItem(KEY,error=>{
error && console.log(error.toString());
});
// //方式2
// AsyncStorage.removeItem(KEY)
// .catch(error=>{
// error && console.log(error.toString());
// });
// //方式3
// try{
// await AsyncStorage.removeItem(KEY);
// }
// catch (error){
// error && console.log(error.toString());
// }
}
getData(){
//方式1
AsyncStorage.getItem(KEY,(error,value)=>{
this.setState({
showText:value
});
console.log(value);
error && console.log(error.toString);
});
// //方式2
// AsyncStorage.getItem(KEY)
// .then(value=>{
// this.setState({
// showText:value
// });
// console.log(value);
// })
// .catch(error=>{
// error && console.log(error.toString);
// })
// //方式3
// try{
// const value = await AsyncStorage.getItem(KEY);
// this.setState({
// showText:value
// });
// console.log(value);
// }
// catch(error){
// error && console.log(error.toString());
// }
}
}
const styles = StyleSheet.create({
container:{
flex: 1,
backgroundColor:'#F5FCFF',
},
text:{
fontSize: 20,
textAlign: 'center',
margin: 10,
},
input:{
height: 30,
//flex: 1,
borderColor: 'black',
borderWidth: 1,
marginRight: 10,
},
input_container:{
flexDirection: 'row',
justifyContent: 'center',
justifyContent: 'space-around',
}
});

react native之使用AsyncStorage 进行数据持久化存储的更多相关文章
- iOS数据持久化存储:归档
在平时的iOS开发中,我们经常用到的数据持久化存储方式大概主要有:NSUserDefaults(plist),文件,数据库,归档..前三种比较经常用到,第四种归档我个人感觉用的还是比较少的,恰恰因为用 ...
- iOS开发——数据持久化Swift篇&使用Core Data进行数据持久化存储
使用Core Data进行数据持久化存储 一,Core Data介绍 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成 ...
- Swift - 使用Core Data进行数据持久化存储
一,Core Data介绍 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成数据,也能够将保存在数据库中的数据还原成对象. ...
- vuex数据持久化存储
想想好还是说下vuex数据的持久化存储吧.依稀还记得在做第一个vue项目时,由于刚刚使用vue,对vue的一些基本概念只是有一个简单的了解.当涉及到非父子组件之间通信时,选择了vuex.只是后来竟然发 ...
- [Xcode 实际操作]七、文件与数据-(14)数据持久化存储框架CoreData的使用:删除CoreData中的数据
目录:[Swift]Xcode实际操作 本文将演示如何删除数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...
- [Xcode 实际操作]七、文件与数据-(13)数据持久化存储框架CoreData的使用:编辑CoreData中的数据
目录:[Swift]Xcode实际操作 本文将演示如何修改数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...
- [Xcode 实际操作]七、文件与数据-(12)数据持久化存储框架CoreData的使用:查找CoreData中的数据
目录:[Swift]Xcode实际操作 本文将演示如何查找数据持久化对象. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //引入数据持 ...
- [Xcode 实际操作]七、文件与数据-(11)数据持久化存储框架CoreData的使用:创建CoreData实体并插入数据
目录:[Swift]Xcode实际操作 本文将演示[CoreData]数据持久化存储框架的使用. 点击[Create a new Xcode project]创建一个新的项目 ->[Single ...
- 转载 -- iOS数据持久化存储
作者:@翁呀伟呀 授权本站转载 概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方 ...
随机推荐
- 5.2.k8s.Secret
#Secret Secret存储密码.token.密钥等敏感数据 Secret以Volume或环境变量方式使用 #Secret类型 Opaque : base64 编码格式的 Secret kuber ...
- 中国MOOC_零基础学Java语言_第4周 循环控制_2念整数
2 念整数(5分) 题目内容: 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整数的每一位输出出来. 如输入1234,则输出: yi er san si 注意, ...
- golang 标准库 sync.Map 中 nil 和 expunge 区别
本文不是 sync.Map 源码详细解读,而是聚焦 entry 的不同状态,特别是 nil 状态和 expunge 状态的区分. entry 是 sync.Map 存放值的结构体,其值有三种,分别为 ...
- Linux下安装Elasticsearch6.5
1.安装JDK8(Elastic 需要 Java 8 环境) 1)下载jdk8文件:http://www.oracle.com/technetwork/java/javase/downloads/jd ...
- spark 2.3.3 的MLlib 使用API
1.api官网 http://spark.apache.org/docs/2.3.3/ml-guide.html
- Miller-Robin 素数测试法 模板
测试单个素数,出错概率比计算机本身出错的概率还要低 算法是基于费马小定理(format),二次探测定理(x*x % p == 1 ,若P为素数,则x的解只能是x = 1或者x = p - 1)加上迭代 ...
- 模板 - 无旋Treap
一般而言作为一棵平衡树只需要插入,删除,值求排名,排名求值,前驱,后继,六个接口. #include<bits/stdc++.h> using namespace std; typedef ...
- go & log
更多日志库 https://github.com/golang/glog github.com/astaxie/beego/logs ... 这里有一个讨论 Golang的log包哪个好用? 参考 G ...
- scala学习笔记(8)
1.trait ------------------------------- 如果只有一个trait就使用extends进行扩展,如果是多个,就使用with对生于trait进行扩展 trait lo ...
- 42. Trapping Rain Water (JAVA)
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...