当前位置:   article > 正文

react native开发之数据持久化(asyncstorage)

asyncstorage
react native提供的asyncstorage是一个简单的,异步的,持久的键值对储存系统,它对与app来说是全局性的,只能储存字符串类型
getItem(key,(error,result)=>{}):通过key获取值。 
setItem(key, value,(error)=>{}):保存 
removeItem(key,(error)=>{}):删除 
clear((error)=>{}):清除所有数据,不建议使用。 
getAllKeys((error,arrays)=>{}):获取所有的key。 
multiGet(keys,(errors,arrays)=>{}):获取多个key的value值 
multiSet:保存多个数据,multiSet([[‘k1’, ‘val1’], [‘k2’, ‘val2’]], cb); 
multiRemove:移除多个数据,multiRemove([‘key1’,’key2’],(errors)=>{})
代码
  1. import React, {Component} from 'react';
  2. import {
  3. StyleSheet,
  4. View,
  5. AsyncStorage,
  6. Button,
  7. Alert,
  8. Text,
  9. TextInput,
  10. } from 'react-native';
  11. export default class AsyncStorageDemo extends Component {
  12. static navigationOptions = {
  13. title: 'AppState'
  14. }
  15. state = {
  16. key:'',
  17. value:'',
  18. data: '\n',
  19. }
  20. _getAll = () => {
  21. this.setState({data: '\n'});
  22. AsyncStorage.getAllKeys((err,keys) => {
  23. if (keys && keys.length>0) {
  24. keys.map((key, index) => {
  25. AsyncStorage.getItem(key, (err, result) => {
  26. var msg = this.state.data+key + ': ' + result + '\n';
  27. this.setState({data: msg});
  28. })
  29. });
  30. }
  31. })
  32. }
  33. _add = () => {
  34. AsyncStorage.setItem(this.state.key, this.state.value, (error) => {
  35. if (error == null) {
  36. Alert.alert('保存成功');
  37. } else {
  38. Alert.alert('error');
  39. }
  40. })
  41. }
  42. _remove = ()=>{
  43. AsyncStorage.removeItem(this.state.key,(error)=>{
  44. if (error == null) {
  45. Alert.alert('删除成功');
  46. } else {
  47. Alert.alert('error');
  48. }
  49. })
  50. }
  51. render() {
  52. return (
  53. <View style={{flex:1}}>
  54. <TextInput style={{height:50,borderColor:'gray',borderWidth:1}} placeholder='key' onChangeText={(txt)=>{this.setState({key:txt})}} value={this.state.key}/>
  55. <TextInput style={{height:50,borderColor:'gray',borderWidth:1}} placeholder='value' onChangeText={(txt)=>{this.setState({value:txt})}} value={this.state.value}/>
  56. <Button title='ADD' onPress={this._add}/>
  57. <Button title='REMOVE' onPress={this._remove}/>
  58. <Button title='GET' onPress={this._getAll}/>
  59. <Text>data:{this.state.data}</Text>
  60. </View>
  61. );
  62. }
  63. }
需要在index.js中注册
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号