← 返回首页
UniApp基础教程(十七)
发表时间:2022-11-09 22:17:20
数据缓存

1.uniapp数据缓存

uniapp数据缓存常用API见下表:

函数名 说明 同步/异步
uni.setStorage 存储数据 异步
uni.setStorageSync 存储数据 同步
uni.getStorage 从本地缓存中获取指定 key 对应的内容 异步
uni.setStorage 从本地缓存中获取指定 key 对应的内容 同步
uni.getStorageInfo 获取当前 storage 的相关信息 异步
uni.getStorageInfoSync 获取当前 storage 的相关信息 同步
uni.removeStorage 从本地缓存中移除指定 key 异步
uni.removeStorageSync 从本地缓存中移除指定 key 同步
uni.clearStorage 清空本地数据缓存 异步
uni.clearStorageSync 清空本地数据缓存 同步

2.实例

pages/index/index.vue

<template>
    <view class="container">
        <button type="default" @click="testSetStorage">setStorage</button>
        <button type="default" @click="testSetStorageSync">setStorageSync</button>
        <button type="default" @click="goto('/pages/other/other')">跳转到other页面</button>
    </view>
</template>


<script>
    export default {

        data() {
            return {

            }
        },
        onLoad() {

        },

        methods: {
            testSetStorage() {
                let user = {
                    username: 'admin',
                    password: '123456'
                }

                uni.setStorage({
                    key: 'loginUserInfo',
                    data: user,
                    success: () => {
                        console.log('setStorage success....');
                    }
                })

                console.log('after do something.... ');
            },
            testSetStorageSync() {
                let user = {
                    username: 'zhangsan',
                    password: '654321'
                }
                try {
                    uni.setStorageSync('loginSuccessUserInfo', user);
                    console.log('setStorageSync success....');
                } catch (err) {
                    console.log(err)
                }
                console.log('after do something.... ');
            },
            goto(url) {
                uni.navigateTo({
                    url: url
                })
            }
        }
    }
</script>

<style lang="scss" scoped>
    .container {
        width: 98%;
        height: auto;
        font-size: 14px;
        text-align: center;
        margin: 0rpx auto;
    }
</style>

pages/other/other.vue

<template>
    <view class="container">
        <text style="font-size: 80rpx; color: crimson; text-decoration: underline;">other.vue</text>
        <hr>
        <view>
            <button type="default" @click="testGetStorage">getStorage</button>
            <button type="default" @click="testGetStorageSync">getStorageSync</button>
            <button type="default" @click="testGetStorageInfo">getStorageInfo</button>
            <button type="default" @click="testGetStorageInfoSync">getStorageInfoSync</button>
            <button type="default" @click="testRemoveStorage">removeStorage</button>
            <button type="default" @click="testRemoveStorageSync">removeStorageSync</button>
        </view>
    </view>
</template>

<script>
    export default {

        data() {
            return {

            }
        },

        onLoad() {

        },

        methods: {
            testGetStorage() {
                uni.getStorage({
                    key: 'loginUserInfo',
                    success: (resp) => {
                        console.log(resp.data);
                    }
                })

            },

            testGetStorageSync() {
                try {
                    const value = uni.getStorageSync('loginSuccessUserInfo');
                    if (value) {
                        console.log(value);
                    }
                }catch(err){
                    console.log(err);
                }
            },

            testGetStorageInfo() {
                uni.getStorageInfo({
                    success: function(res) {
                        console.log(res.keys);
                        console.log(res.currentSize);
                        console.log(res.limitSize);
                    }
                });
            },

            testGetStorageInfoSync(){
                try {
                    const res = uni.getStorageInfoSync();
                    console.log(res.keys);
                    console.log(res.currentSize);
                    console.log(res.limitSize);
                } catch (err) {
                    console.log(err);
                }
            },

            testRemoveStorage(){
                uni.removeStorage({
                    key: 'loginUserInfo',
                    success: function (res) {
                        console.log('remove loginUserInfo success...');
                    }
                });
            },

            testRemoveStorageSync(){
                try {
                    uni.removeStorageSync('loginSuccessUserInfo');
                } catch (e) {
                    // error
                    console.log(e);
                }
            }
        }
    }
</script>

<style lang="scss" scoped>
    .container {
        width: 98%;
        height: auto;
        font-size: 14px;
        text-align: center;
        margin: 0rpx auto;
    }
</style>

运行效果: