/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React,{ Component } from 'react';
import {
AppRegistry,StyleSheet,AsyncStorage,Image,Text,TouchableHighlight,TextInput,StatusBar,View
} from 'react-native';
import AutoExpandingTextInput from './AutoExpandingTextInput';
import constantData from './data/SimpleSample.json';
let newJSONString = JSON.stringify(constantData);
let array = new Array;
export default class ViewProject extends Component {
_doSomething(error){
if(error!=null){
console.log("--doSomething error messge:"+error.messge);
return;
}
//执行成功的操作
console.log("--doSomething-success----");
}
//这里 对数据的操作都分别用回调方法与 Promise机制后继处理的方法 来实现
//1.写入数据
//1.1 回调方法
_setData(key,value){
AsyncStorage.setItem(key,value,this._doSomething);
}
//1.2 通过Promise机制后继处理的方法
_setDataPromise(key,value){
AsyncStorage.setItem(key,value).then(
()=>{
console.log("write one success");
}
).catch(
(error)=>{
console.log("write one error");
}
);
}
//1.3 一次写入多组数据 回调方法
_SetMultiData(array){
AsyncStorage.multiSet(array,this._doSomething)
}
//1.4 一次写入多组数据 Promise机制后继处理的方法
_setMultiDataPromise(array){
AsyncStorage.multiSet(array).then(
()=>{
console.log(">>write multi success"); //保存成功的操作
}
).catch(
(error)=>{
console.log(">>write multi error:"+error.message); //保存失败的操作
}
);
}
//2. 读取数据
//2.1 回调方法方式读取
_getData(key){
AsyncStorage.getItem(key,this._handleResult);
}
_handleResult(error,result){
if(error!=null){
console.log("error message:"+error.message);
//读取失败的操作
return;
}
if(result===null){
console.log("--null--"); // 存储中没有指定键对应的值,处理这种情况
return;
}
console.log("--reade success -result--"+result);
}
_handleAllKeys(error,keys){
if(error != null){
console.log("dataLoaded error:"+error.message);
return;
}else{
console.log("get all key error is null");
let allKeyLen = keys.length;
for (let counter=0; counter<allKeyLen;counter++) {
console.log("key"+counter+":"+keys[counter]);
AsyncStorage.getItem(keys[counter]).then(
(result)=>{
console.log("key"+keys[counter]+" getItem data:"+result);
}
).catch(
(error)=>{
console.log("error message:"+error.message);
//读取失败的操作
return;
}
);
}
}
}
//2.2 Promise机制后继处理的方法
_getDataPromise(key){
AsyncStorage.getItem(key).then(
(result)=>{
if(result===null){
console.log("--null--"); // 存储中没有指定键对应的值,处理这种情况
return;
}else if(result!=null){
console.log("--success--result="+result);//读取成功的操作
}
}
).catch(
(error)=>{
console.log("---reade error:"+error.message);
}
);
}
//获取所有数据 回调方法
_getAllKeys(){
AsyncStorage.getAllKeys(this._handleAllKeys);
}
//获取所有数据 Promise机制后继处理的方法
_getAllKeysPromise(){
AsyncStorage.getAllKeys().then(
(keys)=>{
let allKeyLen = keys.length;
for (let counter=0; counter<allKeyLen;counter++) {
console.log(">>key"+counter+":"+keys[counter]);
AsyncStorage.getItem(keys[counter]).then(
(result)=>{
console.log(">>key"+keys[counter]+" getItem data:"+result);
}
).catch(
(error)=>{
console.log("error message:"+error.message);
//读取失败的操作
return;
}
);
}
}
).catch(
(error)=>{
console.log("error message:"+error.message);
//读取失败的操作
return;
}
);
}
//3 删除数据
//3.1 删除单个数据 回调方法
_delete(key){
AsyncStorage.removeItem(key,this._doSomething);
}
//3.2 删除单个数据 Promise 机制后继处理方式
_deletePromise(key){
AsyncStorage.removeItem(key).then(
()=>{
//删除成功后的操作
console.log("success delete");
}
).catch(
(error)=>{
//处理异常操作
console.log("error:"+error.message);
}
);
}
//3.3 回调方式删除多个数据
_multiRemove(array){
AsyncStorage.multiRemove(array,this._doSomething);
}
//3.4 删除多个数据 Promise 机制后继处理方式
_multiRemovePromise(array){
AsyncStorage.multiRemove(array).then(
//操作成功处理
()=>{
console.log("--删除成功--");
}
).catch(
(error)=>{
console.log("--删除失败--");
}
);
}
//3.5 删除所有数据 回调方式
_clear(){
AsyncStorage.clear(this._doSomething);
}
//3.6 删除所有数据 Promise 机制后继处理方式
_clearPromise(){
AsyncStorage.clear().then(
()=>{
//删除成功的操作
console.log("--删除成功--");
}
).catch(
(error)=>{
console.log("--删除失败--error:"+error.message);
}
);
}
//4. JSON 数据的保存于读取
//4.1 回调方式保存json格式数据
_saveJSON(key,jsonString){
AsyncStorage.setItem(key,jsonString,this._doSomething);
}
//4.2 保存json格式数据 Promise 机制后继处理方式
_saveJSONPromise(key,jsonString){
AsyncStorage.setItem(key,jsonString).then(
()=>{
console.log("write json success");
}
).catch(
(error)=>{
console.log("write json error:"+error.message);
}
);
}
//4.3 回调方式 读取json数据
_getJSON(key){
AsyncStorage.getItem(key,this._handleResultJSON);
}
//4.3 读取json数据 Promise 机制后继处理方式
_getJSONPromise(key){
AsyncStorage.getItem(key).then(
(result)=>{
if(result===null){
console.log("-json data-null--"); // 存储中没有指定键对应的值,处理这种情况
return;
}else if(result!=null){
console.log("-json-success-result="+result);//读取成功的操作
}
}
).catch(
(error)=>{
console.log("---error="+e.message);//读取成功的操作
}
);
}
_handleResultJSON(error,result){
if(error!=null){
console.log("json error message:"+error.message);
//读取失败的操作
return;
}
if(result===null){
console.log("-json-null--"); // 存储中没有指定键对应的值,处理这种情况
return;
}
// let anotherData = JSON.parse(result); //将字符串转换为JSON对象
console.log("--reade json success -result--"+ result);
}
_onChangeText(newText) {
console.log('inputed text:' + newText);
// this._setData("1","ni hao");
// this._setDataPromise("2","ni bu hao");
// this._SetMultiData([["3","003"],["4","004"]]);
// this._setMultiDataPromise([["5","005"],["6","006"]]);
// this._getData("1");
// this._getDataPromise("2");
// this._getAllKeys();
// this._getAllKeysPromise();
// this._delete("1");
// this._deletePromise("2");
// this._multiRemovePromise(["3","4"]);
// this._multiRemove(["5","6"]);
// this._clear();
// this._clearPromise();
// this._saveJSONPromise("json",newJSONString);
// this._getJSONPromise("json");
// this._saveJSON("json1",newJSONString);
// this._getJSON("json1");
// this._getAllKeysPromise();
}
render() {
return (
<View style={styles.container}>
<AutoExpandingTextInput
onChangeText={(newText)=>{this._onChangeText(newText)}}
/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex:1,justifyContent: 'center',alignItems: 'center',backgroundColor:'#F5FCFF'
}
});
AppRegistry.registerComponent('ViewProject',() => ViewProject);
原文链接:https://www.f2er.com/react/304398.html