/** * 公共存储库 * @邠心vbe on 2021/04/20 */ import AsyncStorage from "@react-native-async-storage/async-storage" import app from '../../app.json'; const DEBUG = app.debug && !app.product; /** * 通过key更新存储内容(内容必须为字符串或数字) * @param {*} key 要存储的字段名 * @param {*} value 要存储的数据 */ export const setStorage = (key, value) => { AsyncStorage.setItem(key, value).then(res => { if (DEBUG) console.log('setStorage-' + key, res ? res : 'success'); }).catch(err => { if (DEBUG) console.warn('setStorage-' + key, err); }); } /** * 通过key更新存储内容(内容必须为json对象) * @param {*} key 要存储的字段名 * @param {*} json 要存储的json数据 */ export const setStorageJson = (key, json) => { AsyncStorage.setItem(key, JSON.stringify(json)).then(res => { if (DEBUG) console.log('setStorageJson-' + key, res ? res : 'success'); }).catch(err => { if (DEBUG) console.warn('setStorageJson-' + key, err); }); } /** * 通过key获取存储内容 * @param {*} key 存储的字段名 * @returns 返回Promise用来获取数据 */ export const getStorage = (key) => { return AsyncStorage.getItem(key); } /** * 通过key获取存储内容 * (同步方法,需使用async和await调用) * @param {*} key 存储的字段名 * @returns 存储的数据(内容为字符串或数字) */ export const getStorageSync = async (key) => { const result = await AsyncStorage.getItem(key); return result; } /** * 通过key获取存储的json数据 * (同步方法,需使用async和await调用) * @param {*} key 存储的字段名 * @returns 存储的数据(自动转化为json对象) */ export const getStorageJsonSync = async (key) => { const result = await AsyncStorage.getItem(key); return result ? JSON.parse(result) : null; } export default storage = { getStorage: getStorage, getStorageSync: getStorageSync, getStorageJsonSync: getStorageJsonSync, setStorage: setStorage, setStorageJson: setStorageJson }