6***@qq.com
6***@qq.com
  • 发布:2018-12-19 12:52
  • 更新:2020-05-27 18:31
  • 阅读:14803

uniapp 怎么设置永久缓存?

分类:uni-app

就是在关闭app后再打开,仍能获取到的缓存
uni.setStorage是不行的,重新打开app缓存就清空了。

2018-12-19 12:52 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com - 畅游阁科技

为什么,uniapp 一旦http请求了,本地所有缓存都清空了呢?

Trust

Trust - 少说废话

App 上,storage 是持久存储的。

所有手机设备都是这样么,建议多测试几个机型。
并且,提供下有问题的机型的详细信息。

  • 6***@qq.com (作者)

    谢谢你的回复,

    可是我的存储到storage里,退回app再进入,原缓存里的数据就没有了,


    存储:


    uni.setStorage({

    key: 'timeconsumList',

    data: this.timeconsumList,

    success: function () {

    console.log('success');

    }

    });


    读取:


    // 获取缓存中的timeconsumList

    uni.getStorage({

    key: 'timeconsumList',

    success: function (res) {

    this.timeconsumList = [];

    this.timeconsumList.push(...res.data);

    }

    });


    timeconsumList是一个数组,里面存储的是多个对象

    然而,并没有读出已经存储进去的数据。


    测试手机 华为mate10


    2018-12-19 14:19

  • 6***@qq.com (作者)

    你好,问题解决了。在读取的时候,需要把this赋值给that。


    2018-12-19 14:44

6***@qq.com

6***@qq.com (作者)

没想到啊没想到,在如此先进的今天,还需要写个var that = this;

  • Trust

    要用 ES6 的箭头函数,uni-app 是支持 ES6 的语法的。


    2018-12-19 14:49

  • Trust

    这种语法层面的细节,多注意下。


    2018-12-19 14:49

  • 嵪代码

    回复 Trust:箭头函数怎么写??我没用过


    2019-02-18 17:56

  • h***@163.com

    在哪写 var that = this?


    2019-02-19 01:15

  • 3***@qq.com

    回复 嵪代码:


    success: function (res) {

    this.timeconsumList = [];

    this.timeconsumList.push(...res.data);

    }

    ES6箭头函数写法:

    使用箭头函数后,this 就不需要改了

    success(res)=>{

    this.timeconsumList = [];

    this.timeconsumList.push(...res.data);

    }


    2019-03-19 16:41

  • 风云杭州

    回复 3***@qq.com: 不错,学到了


    2020-07-18 10:19

CaesarHe

CaesarHe - 微信:Caesar-Bosheng-He

var that = this 要写在所有的异步操作之前,就像ajax请求,不然在回调里再取this就不再是你要的this啦

该问题目前已经被锁定, 无法添加新回复