本地數(shù)據(jù)存儲與緩存操作:玩轉(zhuǎn) uni.setStorageSync 全家桶!
在前端項目中,我們常常需要將一些數(shù)據(jù)保存在本地,比如:
- 用戶 Token / 登錄信息
- 頁面緩存數(shù)據(jù)
- 用戶行為記錄或設(shè)置項
在 UniApp 中,使用起來非常簡單,但做好封裝和規(guī)范化使用才是關(guān)鍵!
本地緩存的核心 API
UniApp 提供同步和異步兩套 API:
(1) 同步 API(推薦在大多數(shù)場景使用)
方法名 | 功能說明 |
uni.setStorageSync(key, data) | 存儲數(shù)據(jù) |
uni.getStorageSync(key) | 獲取數(shù)據(jù) |
uni.removeStorageSync(key) | 移除某個 key 的數(shù)據(jù) |
uni.clearStorageSync() | 清空所有本地緩存數(shù)據(jù) |
示例:
// 存儲
uni.setStorageSync('token', 'abc123')
// 讀取
const token = uni.getStorageSync('token')
// 刪除
uni.removeStorageSync('token')
// 清空全部
uni.clearStorageSync()
(2) 異步 API(需要回調(diào),不推薦頻繁使用)
uni.setStorage({
key: 'userInfo',
data: { name: 'Tom' },
success() {
console.log('保存成功')
}
})
封裝 Storage 工具函數(shù)(推薦實戰(zhàn))
我們可以封裝一個通用的 storage.js 工具,統(tǒng)一管理緩存操作,避免硬編碼 key、統(tǒng)一處理 JSON 等數(shù)據(jù)。
utils/storage.js:
// 存儲數(shù)據(jù)
exportfunctionset(key, value) {
try {
uni.setStorageSync(key, value)
} catch (e) {
console.error(`保存失敗:${key}`, e)
}
}
// 讀取數(shù)據(jù)
exportfunctionget(key, defaultValue = null) {
try {
const result = uni.getStorageSync(key)
return result !== '' ? result : defaultValue
} catch (e) {
console.error(`讀取失?。?{key}`, e)
return defaultValue
}
}
// 刪除指定 key
exportfunctionremove(key) {
try {
uni.removeStorageSync(key)
} catch (e) {
console.error(`刪除失?。?{key}`, e)
}
}
// 清空所有緩存
exportfunctionclear() {
try {
uni.clearStorageSync()
} catch (e) {
console.error('清空緩存失敗', e)
}
}
使用方式(統(tǒng)一入口,簡單明了)
引用:
import * as Storage from '@/utils/storage.js'
使用:
// 保存 Token
Storage.set('token', 'abc123')
// 獲取 Token
const token = Storage.get('token')
// 刪除 Token
Storage.remove('token')
// 清空所有緩存
Storage.clear()
應(yīng)用場景舉例
場景 1:登錄成功后保存用戶信息
// 登錄成功后
Storage.set('userInfo', res.data.user)
Storage.set('token', res.data.token)
場景 2:頁面加載時讀取緩存
onLoad() {
const userInfo = Storage.get('userInfo')
if (userInfo) {
this.user = userInfo
}
}
場景 3:退出登錄時清除緩存
logout() {
Storage.clear()
uni.reLaunch({
url: '/pages/login/login'
})
}
小結(jié)
能力點(diǎn) | 說明 |
API 掌握 | 熟練使用 uni.setStorageSync |
封裝函數(shù) | 實現(xiàn)通用緩存操作,減少重復(fù) |
實戰(zhàn)場景應(yīng)用 | 登錄、初始化、退出全流程覆蓋 |