# uni.getStorageSync - 同步获取存储数据示例
## 官方文档
参考官方文档:https://doc.dcloud.net.cn/uni-app-x/api/storage/storage.html#getstoragesync
## 概述
`uni.getStorageSync` 用于从本地缓存中同步获取指定 key 的内容。
## 基础用法
```javascript
try {
const value = uni.getStorageSync('key')
console.log('获取的数据', value)
} catch (err) {
console.error('获取失败', err)
}
```
## 完整示例
### 示例 1: 获取用户信息
```javascript
try {
const userInfo = uni.getStorageSync('userInfo')
if (userInfo) {
console.log('用户信息', userInfo)
} else {
console.log('数据不存在')
}
} catch (err) {
console.error('获取失败', err)
}
```
### 示例 2: 获取 Token
```javascript
function getToken() {
try {
const token = uni.getStorageSync('token')
return token || null
} catch (err) {
console.error('获取Token失败', err)
return null
}
}
// 使用
const token = getToken()
if (token) {
console.log('Token存在', token)
} else {
console.log('未登录')
}
```
### 示例 3: 在页面中使用
```vue
用户名:{{ userInfo.name }}
邮箱:{{ userInfo.email }}
未登录
```
### 示例 4: 封装获取函数
```javascript
// utils/storage.js
const storage = {
get(key, defaultValue = null) {
try {
const value = uni.getStorageSync(key)
return value !== '' ? value : defaultValue
} catch (err) {
console.error(`获取${key}失败`, err)
return defaultValue
}
},
getString(key, defaultValue = '') {
return this.get(key, defaultValue)
},
getNumber(key, defaultValue = 0) {
const value = this.get(key, defaultValue)
return Number(value) || defaultValue
},
getBoolean(key, defaultValue = false) {
const value = this.get(key, defaultValue)
return Boolean(value)
},
getObject(key, defaultValue = {}) {
const value = this.get(key, defaultValue)
return typeof value === 'object' ? value : defaultValue
}
}
// 使用
const userInfo = storage.getObject('userInfo', {})
const token = storage.getString('token', '')
const count = storage.getNumber('count', 0)
```
### 示例 5: 检查数据是否存在
```javascript
function hasStorage(key) {
try {
const value = uni.getStorageSync(key)
return value !== '' && value !== null && value !== undefined
} catch (err) {
return false
}
}
// 使用
if (hasStorage('userInfo')) {
console.log('用户信息存在')
} else {
console.log('用户信息不存在')
}
```
## 参数说明
| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| key | String | 是 | 本地缓存中指定的 key |
## 返回值
| 类型 | 说明 |
|------|------|
| Any | key 对应的内容 |
## 平台兼容性
| 平台 | 支持情况 |
|------|---------|
| H5 | ✅ |
| 微信小程序 | ✅ |
| 支付宝小程序 | ✅ |
| 百度小程序 | ✅ |
| 字节跳动小程序 | ✅ |
| QQ 小程序 | ✅ |
| 快手小程序 | ✅ |
| App | ✅ |
| 快应用 | ✅ |
## 注意事项
1. 同步接口会阻塞后续代码执行,性能比异步接口好
2. 如果 key 不存在,返回空字符串
3. 建议使用 try-catch 处理错误
4. 适合在页面初始化时获取数据
## 参考资源
- **官方文档**: https://doc.dcloud.net.cn/uni-app-x/api/storage/storage.html#getstoragesync
- **异步版本**: https://doc.dcloud.net.cn/uni-app-x/api/storage/storage.html#getstorage
- **设置存储**: https://doc.dcloud.net.cn/uni-app-x/api/storage/storage.html#setstoragesync