最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

对reactnative的AsyncStorage进行小型封装

来源:动视网 责编:小采 时间:2020-11-27 20:20:02
文档

对reactnative的AsyncStorage进行小型封装

对reactnative的AsyncStorage进行小型封装:/** * @overview A minimalistic wrapper around React Native's AsyncStorage. * @license MIT */ import { AsyncStorage } from 'react-native'; import merge from 'lodash'; const store = { /** * Get a one or more value for a ke
推荐度:
导读对reactnative的AsyncStorage进行小型封装:/** * @overview A minimalistic wrapper around React Native's AsyncStorage. * @license MIT */ import { AsyncStorage } from 'react-native'; import merge from 'lodash'; const store = { /** * Get a one or more value for a ke


/**
 * @overview A minimalistic wrapper around React Native's AsyncStorage.
 * @license MIT
 */
import { AsyncStorage } from 'react-native';
import merge from 'lodash';

const store = {
 /**
 * Get a one or more value for a key or array of keys from AsyncStorage
 * @param {String|Array} key A key or array of keys
 * @return {Promise}
 */
 get(key) {
 if(!Array.isArray(key)) {
 return AsyncStorage.getItem(key).then(value => {
 return JSON.parse(value);
 });
 } else {
 return AsyncStorage.multiGet(key).then(values => {
 return values.map(value => {
 return JSON.parse(value[1]);
 });
 });
 }
 },

 /**
 * Save a key value pair or a series of key value pairs to AsyncStorage.
 * @param {String|Array} key The key or an array of key/value pairs
 * @param {Any} value The value to save
 * @return {Promise}
 */
 save(key, value) {
 if(!Array.isArray(key)) {
 return AsyncStorage.setItem(key, JSON.stringify(value));
 } else {
 var pairs = key.map(function(pair) {
 return [pair[0], JSON.stringify(pair[1])];
 });
 return AsyncStorage.multiSet(pairs);
 }
 },

 /**
 * Updates the value in the store for a given key in AsyncStorage. If the value is a string it will be replaced. If the value is an object it will be deep merged.
 * @param {String} key The key
 * @param {Value} value The value to update with
 * @return {Promise}
 */
 update(key, value) {
 return store.get(key).then(item => {
 value = typeof value === 'string' ? value : merge({}, item, value);
 return AsyncStorage.setItem(key, JSON.stringify(value));
 });
 },

 /**
 * Delete the value for a given key in AsyncStorage.
 * @param {String|Array} key The key or an array of keys to be deleted
 * @return {Promise}
 */
 delete(key) {
 if (Array.isArray(key)) {
 return AsyncStorage.multiRemove(key);
 } else {
 return AsyncStorage.removeItem(key);
 }
 },

 /**
 * Get all keys in AsyncStorage.
 * @return {Promise} A promise which when it resolves gets passed the saved keys in AsyncStorage.
 */
 keys() {
 return AsyncStorage.getAllKeys();
 }
};

export default store ;




然后你需要的地方import store 进来就好了。

使用方法 
store.save(key,value)
.then(()=>{store.get(key)})
.then(()=>{store.delete(key)})
.catch(error()=>{console.log(error)})

注意在调用时请使用 ansyc await

文档

对reactnative的AsyncStorage进行小型封装

对reactnative的AsyncStorage进行小型封装:/** * @overview A minimalistic wrapper around React Native's AsyncStorage. * @license MIT */ import { AsyncStorage } from 'react-native'; import merge from 'lodash'; const store = { /** * Get a one or more value for a ke
推荐度:
标签: 封装 React native
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top