饰演者 發表於 2019-7-5 20:45:00

uni-app 之 数据缓存

<p style="text-align: center"><span style="font-size: 18pt">uni-app 之 数据缓存</span></p>
<p>  铛铛铛~~~之前有写过一个navagator路由的博客,今天就分享一下关于数据缓存的把</p>
<p>  <span style="font-size: 15px"><strong>1.uni.setStorage(OBJECT) 与&nbsp;uni.getStorage(OBJECT)&nbsp; &nbsp; 这两个是异步缓存,简单说就是将数据放到本地缓存指定的key中,一个存一个取罢了</strong></span></p>
<p>    uni.setStorage(OBJECT) :将数据缓存在本地缓存中指定的key中,会覆盖掉原来该key中的内容,这是一个异步接口。(</p>
<p>        <code class="ಠhighlight-container">参数名&nbsp; &nbsp; &nbsp; 类型&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;是否必填&nbsp; &nbsp; 说明</code></p>
<p><code class="ಠhighlight-container">        key&nbsp; &nbsp; &nbsp; &nbsp; String&nbsp; &nbsp; &nbsp; &nbsp; 是&nbsp; &nbsp; &nbsp; &nbsp; 本地缓存中的指定的 key </code></p>
<p><code class="ಠhighlight-container">        data&nbsp; &nbsp; &nbsp; &nbsp;Object<span class="token operator">/String&nbsp; &nbsp;是&nbsp; &nbsp; &nbsp; &nbsp; 需要存储的内容 </span></code></p>
<p><code class="ಠhighlight-container"><span class="token operator">        success&nbsp; &nbsp; &nbsp;Function&nbsp; &nbsp; &nbsp; &nbsp;否&nbsp; &nbsp; &nbsp; &nbsp;接口调用成功的回调函数 </span></code></p>
<p><code class="ಠhighlight-container"><span class="token operator">        fail&nbsp; &nbsp; &nbsp; &nbsp;Function&nbsp; &nbsp; &nbsp; &nbsp;否&nbsp; &nbsp; &nbsp; &nbsp;接口调用失败的回调函数 </span></code></p>
<p><code class="ಠhighlight-container"><span class="token operator">        complete  &nbsp;&nbsp;Function&nbsp; &nbsp; &nbsp; 否&nbsp; &nbsp; &nbsp; &nbsp; 接口调用结束的回调函数(调用成功、失败都会执行)</span></code></p>
<p>     )</p>
<p>    uni.getStorage(OBJECT) : 从本地缓存中异步获取指定key对应的内容(</p>
<p>    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<code class="ಠhighlight-container">参数名&nbsp; &nbsp; &nbsp; &nbsp;类型&nbsp; &nbsp; &nbsp; &nbsp;是否必填&nbsp; &nbsp; &nbsp;说明</code></p>
<p><code class="ಠhighlight-container">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; key&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String&nbsp; &nbsp; &nbsp; 是&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;本地缓存中的指定的</code><code class="ಠhighlight-container">key </code></p>
<p><code class="ಠhighlight-container">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; success&nbsp; &nbsp; &nbsp; &nbsp;Function&nbsp; &nbsp; &nbsp;是&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;接口调用的回调函数</code><code class="ಠhighlight-container">res <span class="token operator">= <span class="token punctuation">{data<span class="token punctuation">: key对应的内容<span class="token punctuation">} </span></span></span></span></code></p>
<p><code class="ಠhighlight-container"><span class="token operator"><span class="token punctuation"><span class="token punctuation"><span class="token punctuation">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fail&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Function&nbsp; &nbsp; &nbsp;否&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;接口调用失败的回调函数 </span></span></span></span></code></p>
<p><code class="ಠhighlight-container"><span class="token operator"><span class="token punctuation"><span class="token punctuation"><span class="token punctuation">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; complete&nbsp; &nbsp; &nbsp; &nbsp;Function&nbsp; &nbsp; &nbsp;否&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;接口调用结束的回调函数(调用成功、失败都会执行)</span></span></span></span></code></p>
<p>    )</p>
<p>&nbsp;    那个例子跟大伙说一下,最近公司做项目,涉及到了一个存放地址的, 将地址的信息缓存到本地指定的URL 这个key中 进行存数据与取数据的操作,废话不多说,上代码~~</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">//这是我定义的url   
let url = `/pages/newHouse/NewHouseDetail?id=${id}`

//URL具体数据
console.log(url)      <span style="color: rgba(51, 153, 102, 1)">///pages/newHouse/NewHouseDetail?id=43
</span></pre>
</div>
<p> 下一步进行将数据缓存在本地 </p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">//这是我设置的缓存信息    将url数据缓存到本地
uni.setStorage({
        key: 'url_key',             ------ key的名称是 url  
        data: url,                 ------ data中存放的是我的url地址
        success: function () {          ------ 成功之后的回调函数   uni.navigateTo我要跳转的页面<br><br>          console.log(1111)            ------缓存成功   打印1111并且跳转页面
                // 存储成功后跳转房源详情页
                uni.navigateTo({
                       url
                })
        }
})         
</pre>
</div>
<p> 下一步读取缓存在本地数据</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">uni.getStorage({
        key: 'url_key',
        success: function (res) {
                console.log('这是获取key中的内容',res)       
        }
})                         //<span style="color: rgba(51, 153, 102, 1)">这是获取key中的内容 {data: "/pages/newHouse/NewHouseDetail?id=41", errMsg: "getStorage:ok"}
</span></pre>
</div>
<p>  绿色标记为我在本地缓存中获取到的数据,res.data 就是我们需要的url地址了,如果需要直接获取就可以了,这一步骤就给大家展示了uni.setStorage(OBJECT) 与&nbsp;uni.getStorage(OBJECT)&nbsp; 整体过程</p>
<p><strong><span style="font-size: 15px">2.uni.setStorageStnc(KEY,DATA) 与&nbsp;uni.getStorage(KEY)&nbsp; &nbsp; 其实这个跟第一个基本上是没有区别的,只不过是一个异步一个同步罢了,参数说明及写法展示给大家</span></strong></p>
<p>  uni.setStorageStnc(KEY,DATA)&nbsp; &nbsp; &nbsp;将data存储在本地缓存中个指定的key中,会覆盖相同key中对应的内容,这是一个同步接口 </p>
<p><code class="ಠhighlight-container">        参数名&nbsp; &nbsp; &nbsp; 类型&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;是否必填&nbsp; &nbsp; 说明</code></p>
<p><code class="ಠhighlight-container">        key&nbsp; &nbsp; &nbsp; &nbsp; String&nbsp; &nbsp; &nbsp; &nbsp; 是&nbsp; &nbsp; &nbsp; &nbsp; 本地缓存中的指定的 key</code></p>
<p><code class="ಠhighlight-container">        data&nbsp; &nbsp; &nbsp; &nbsp;Any&nbsp; &nbsp; &nbsp;&nbsp;<span class="token operator">&nbsp; &nbsp;是&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;需要存储的内容,只支持原生类型、及能够通过 JSON.stringify 序列化的对象</span></code></p>
<p><span class="token operator">    还是以地址url为例,以上个例子为基础来说&nbsp;&nbsp;</span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">     uni.setStorageSync('url_key', 'url');   <span style="color: rgba(51, 153, 102, 1)">将我的url信息存放到 url_key 中</span></pre>
</div>
<p><span class="token operator"><span class="token punctuation"><span class="token function"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token punctuation">   uni.getStorageStnc(KEY)&nbsp; &nbsp; &nbsp;从本地缓存中同步获取指定 key 对应的内容。</span></span></span></span></span></span></span></span></span></p>
<p><span class="token operator"><span class="token punctuation"><span class="token function"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token punctuation">        </span></span></span></span></span></span></span></span></span><code class="ಠhighlight-container">参数名&nbsp; &nbsp; &nbsp; 类型&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;是否必填&nbsp; &nbsp; 说明</code></p>
<p><code class="ಠhighlight-container">        key&nbsp; &nbsp; &nbsp; &nbsp; String&nbsp; &nbsp; &nbsp; &nbsp; 是&nbsp; &nbsp; &nbsp; &nbsp; 本地缓存中的指定的 key</code></p>
<p><span class="token operator"><span class="token punctuation"><span class="token function"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token punctuation">    获取同步的缓存key中地址信息&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></span></span></span></span></span></span></span></span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">    const value = uni.getStorageSync('url_key');    <span style="color: rgba(51, 153, 102, 1)">//将我从key中获取的信息赋值给value
</span></pre>
</div>
<p><span style="font-size: 15px"><strong>3.uni.removeStorage(OBJECT) 与&nbsp;uni.removeStorageSync(KEY)&nbsp; &nbsp;这两个都是从本地缓存中移除指定的key&nbsp; &nbsp;与上面的也是一样样样的~~~&nbsp; &nbsp;前面是异步的后面是同步的&nbsp; &nbsp; &nbsp;异步为例~~~~</strong></span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;">uni.getStorage({
        key:'url',
        success:function(res){
                console.log(res)                    <span style="color: rgba(51, 153, 102, 1)">------打印异步中获取的信息</span>
                uni.removeStorage({
                        key:'url',
                        success:function() {
                                console.log(' 移除成功')      <span style="color: rgba(51, 153, 102, 1)">-----获取成功后移除key 中的内容</span>
                        }
                })
        }
})      
</pre>
</div>
<p>  <img src="https://img2018.cnblogs.com/blog/1664944/201907/1664944-20190705203747358-1405413795.png">&nbsp; &nbsp; 这是我打印出来的数据&nbsp; &nbsp;通过了一个点击事件,这是显示我移除成功了,然后的~~~~等等等&nbsp; 等你在点击的时候会发现他并不打印了&nbsp; &nbsp;也许你会因此疑惑&nbsp; 那是因为我已经将这个key所对应的数据移除了呀,所以当然是什么都不打印的啦~~~</p>
<p><strong><span style="font-size: 15px">4.uni.clearStorage() 与 uni.clearStorageSync()&nbsp; &nbsp;这两个都是清理本地数据的缓存&nbsp; &nbsp; 当然啦&nbsp; 还是一个异步一个同步的&nbsp; &nbsp; 这个跟上一个其实是一样的   就是说这个吧 emmmmm&nbsp; &nbsp;清除了你所有的本地数据&nbsp; &nbsp;上一个只是清除了你本地指定key中的内容</span></strong></p>
<p><strong><span style="font-size: 15px">&nbsp; &nbsp; &nbsp; &nbsp; </span></strong>写法就是直接emmmm 写!!!&nbsp; &nbsp;&nbsp;uni.clearStorage()和uni.clearStorageSync()&nbsp; &nbsp; &nbsp;哈哈哈哈哈</p>
<p>我要是呢,写的不好,写的不足,还希望大家指出,相信我,我会改正的 !!嗯嗯嗯嗯嗯</p><br><br>
来源:https://www.cnblogs.com/gongliying/p/11134499.html
頁: [1]
查看完整版本: uni-app 之 数据缓存