美文网首页前端总结
react-native 3 数据存储

react-native 3 数据存储

作者: 辛未羊的前端随笔 | 来源:发表于2022-01-04 10:40 被阅读0次

    数据存储是开发APP必不可少的一部分,比如页面缓存,从网络上获取数据的本地持久化等,那么在RN中如何进行数据存储呢?

    RN官方推荐我们在RN中用AsyncStorage进行数据存储。

    什么是AsyncStorage?

    简单的,异步的,持久化的key-value存储系统
    AsyncStorage也是Rect Native官方推荐的数据存储方式,旨在代替LocalStorage
    AsyncStorage在iOS下存储分两种情况:
    如果存储的内容较小,那么AsyncStorage会将要存储的内容凡在个序列化的字典中;
    如果存储的值较大,那么AsyncStorage会将存储的内容放在一个单独的文件中;
    AsyncStorage在Android下的存储也分两种情况:
    AsyncStorage会将数据存储在 RocksDB 或者 SQLite ,具体存储在 RocksDB 中还是SQLite中这取决于设备支持哪一种存储方式了。

    如何使用AsyncStorage?

    安装

    npm install @react-native-async-storage/async-storage
    npx pod-install //如果你的是Mac系统需要执行下pod安装

    使用

    import AsyncStorage from '@react-native-async-storage/async-storage';

    存储数据

    函数原型

    static getItem(key: string, [callback]: ?(error: ?Error, result: ?string) => void): Promise

    实例

    /**
     * 存储数据
     * @returns {Promise.<void>}
     */
    async doSave() {
        //用法一
        AsyncStorage.setItem(KEY, this.value, error => {
            error && console.log(error.toString());
        });
    
        //用法二
        AsyncStorage.setItem(KEY, this.value)
            .catch(error => {
                error && console.log(error.toString());
            });
    
        //用法三
        try {
            await  AsyncStorage.setItem(KEY, this.value);
        } catch (error) {
            error && console.log(error.toString());
        }
    }
    
    读取数据

    函数原型

    static getItem(key: string, [callback]: ?(error: ?Error, result: ?string) => void): Promise

    示例

    /**
     * 获取数据
     */
    async getData() {
        //用法一
        AsyncStorage.getItem(KEY, (error, value) => {
            this.setState({
                showText: value
            });
            console.log(value);
            error && console.log(error.toString());
        });
        //用法二
        AsyncStorage.getItem(KEY)
            .then(value => {
                this.setState({
                    showText: value
                });
                console.log(value);
    
            })
            .catch(error => {
                error && console.log(error.toString());
            });
        //用法三
        try {
            const value = await  AsyncStorage.getItem(KEY);
            this.setState({
                showText: value
            });
            console.log(value);
        } catch (error) {
            error && console.log(error.toString());
        }
    }
    
    删除数据

    函数原型

    static removeItem(key: string, [callback]: ?(error: ?Error) => void): Promise

    示例

    /**
     * 删除数据
     * @returns {Promise.<void>}
     */
    async doRemove() {
        //用法一
        AsyncStorage.removeItem(KEY,error => {
            error && console.log(error.toString());
        });
    
        //用法二
        AsyncStorage.removeItem(KEY)
            .catch(error => {
                error && console.log(error.toString());
            });
    
        //用法三
        try {
            await  AsyncStorage.removeItem(KEY);
        } catch (error) {
            error && console.log(error.toString());
        }
    }
    
    AsyncStorage有那些常用的API?

    setItem()

    方法原型:static setItem(key: string, value: string, [callback]: ?(error: ?Error) => void)

    该方法提供以key,value键值对的方式存储数据,方法的第三个参数是错误callback,可以通过判断error是否为空来判断是否保存成功。方法返回一个Promise对象。

    getItem()

    方法原型:static getItem(key: string, [callback]: ?(error: ?Error, result: ?string) => void)

    该方法用户获取存储的数据,方法的第二个参数是callback(error,result),完成读取数据后会回调该方。方法返回一个Promise对象。

    removeItem()

    方法原型:static removeItem(key: string, [callback]: ?(error: ?Error) => void)

    删除一个字段。可以通过判断error是否为空来判断是否保存成功。方法返回一个Promise对象。

    相关文章

      网友评论

        本文标题:react-native 3 数据存储

        本文链接:https://www.haomeiwen.com/subject/jzrqcrtx.html