<template>
<!-- #ifdef APP -->
<scroll-view class="page-scroll-view">
<!-- #endif -->
<view>
<page-head :title="title"></page-head>
<view class="uni-common-mt">
<view class="uni-list">
<view class="uni-list-cell uni-list-cell-line">
<view class="uni-list-cell-left">
<view class="uni-label">key</view>
</view>
<view class="uni-list-cell-db">
<input class="uni-input" type="text" placeholder="请输入key" name="key" :value="key" maxlength="-1"
@input="keyChange" />
</view>
</view>
<view class="uni-list-cell">
<view class="uni-list-cell-left">
<view class="uni-label">value</view>
</view>
<view class="uni-list-cell-db">
<input class="uni-input" type="text" placeholder="请输入value" name="data"
:value="typeof data === 'string' ? data : JSON.stringify(data)" maxlength="-1" @input="dataChange" />
</view>
</view>
</view>
<view class="uni-padding-wrap">
<view class="uni-btn-v">
<button class="uni-btn btn-getStorageInfoASync" type="primary" @tap="getStorageInfo">
获取存储概述信息-异步
</button>
<button class="uni-btn btn-getStorageInfoSync" @tap="getStorageInfoSync">
获取存储概述信息-同步
</button>
</view>
<text class="uni-list-cell-db-text">{{ storageInfo }}</text>
<view class="uni-flex uni-row">
<button type="default" style="width:50%" @tap="strMock">
填充字符串
</button>
<button type="default" style="width:50%" @tap="complexMock">
填充复杂对象
</button>
</view>
<view class="uni-flex uni-row">
<button type="default" style="width:50%" @tap="numberMock">
填充整型
</button>
<button type="default" style="width:50%" @tap="floatMock">
填充浮点型
</button>
</view>
<view class="uni-flex uni-row">
<button type="default" style="width:50%" @tap="jsonLikeMock">
填充json字符串
</button>
<button type="default" style="width:50%" @tap="longLikeMock">
填充整数字符串
</button>
</view>
<view class="uni-flex uni-row">
<button type="default" style="width:50%" @tap="floatLikeMock">
填充浮点字符串
</button>
<button type="default" style="width:50%" @tap="negativeLikeMock">
填充负数字符串
</button>
</view>
<view class="uni-flex uni-row">
<button type="default" class="uni-btn btn-complexStaticTest" style="width:100%" @tap="complexStaticTest">
字面量读写测试
</button>
</view>
</view>
<view class="uni-padding-wrap">
<view class="uni-btn-v">
<button type="primary" class="uni-btn btn-setstorageAsync" @tap="setStorage">
存储数据-异步
</button>
<button class="uni-btn btn-getstorageAsync" @tap="getStorage">读取数据-异步</button>
<button class="uni-btn btn-removeStorageInfoASync" @tap="removeStorage">移除数据-异步</button>
<button class="uni-btn btn-clearStorageInfoASync" @tap="clearStorage">清理数据-异步</button>
</view>
<view class="uni-btn-v">
<button type="primary" class="uni-btn btn-setstorageSync" @tap="setStorageSync">
存储数据-同步
</button>
<button class="uni-btn btn-getstorageSync" @tap="getStorageSync">读取数据-同步</button>
<button class="uni-btn btn-removeStorageInfoSync" @tap="removeStorageSync">
移除数据-同步
</button>
<button class="uni-btn btn-clearStorageInfoSync" @tap="clearStorageSync">
清理数据-同步
</button>
</view>
</view>
</view>
<button type="primary" @click="goto">前往storage管理器</button>
</view>
<!-- #ifdef APP -->
</scroll-view>
<!-- #endif -->
</template>
<script>
export default {
data() {
return {
title: 'get/set/clearStorage',
key: '',
data: '' as any,
apiGetData: '' as any | null,
storageInfo: '',
staticComplexRet: false,
jest_saveUTSJSONObjectSyncResult: 0,
jest_saveUTSJSONObjectAsyncResult: 0,
jest_saveUTSJSONObjectArraySyncResult: 0
}
},
methods: {
getStorageInfo() {
uni.getStorageInfo({
success: (res) => {
this.apiGetData = res
this.storageInfo = JSON.stringify(res)
},
})
},
getStorageInfoSync() {
try {
const res = uni.getStorageInfoSync()
this.apiGetData = res
this.storageInfo = JSON.stringify(res)
} catch (e) {
// error
console.log(e)
}
},
jsonLikeMock() {
this.key = 'key_' + Math.random()
this.data = JSON.stringify({
name: "james",
age: 12,
from: "american"
});
},
longLikeMock() {
this.key = 'key_' + Math.random()
this.data = "1234567890"
},
floatLikeMock() {
this.key = 'key_' + Math.random()
this.data = "321456.1234567890"
},
negativeLikeMock() {
this.key = 'key_' + Math.random()
this.data = "-321456"
},
strMock() {
this.key = 'key_' + Math.random()
this.data = '测试字符串数据,长度为16个字符'
},
complexStaticTest() {
uni.setStorageSync("key_complexStaticMock", {
name: "张三",
age: 12
})
let savedData = uni.getStorageSync("key_complexStaticMock")
this.staticComplexRet = false
if (savedData instanceof UTSJSONObject) {
if ((savedData as UTSJSONObject).getNumber('age') == 12) {
this.staticComplexRet = true
uni.showToast({
icon: 'success',
title: '测试通过'
})
}
}
},
complexMock() {
this.key = 'key_' + Math.random()
let jsonObj = {
name: '张三',
age: 12,
classMate: [
{
id: 1001,
name: '李四',
},
{
id: 1002,
name: 'jack ma',
},
],
}
this.data = jsonObj
},
numberMock() {
this.key = 'key_' + Math.random()
this.data = 10011
},
floatMock() {
this.key = 'key_' + Math.random()
this.data = 3.1415926535893384626
},
keyChange: function (e : InputEvent) {
this.key = e.detail.value
},
dataChange: function (e : InputEvent) {
this.data = e.detail.value
},
getStorage: function () {
var key = this.key
if (key.length == 0) {
uni.showModal({
title: '读取数据失败',
content: 'key 不能为空',
showCancel: false,
})
} else {
let that = this
uni.getStorage({
key: key,
success: (res) => {
that.apiGetData = res.data
let desc : string = typeof this.apiGetData
if ("object" == desc) {
desc = desc + ": " + JSON.stringify(this.apiGetData)
} else {
desc = desc + ": " + this.apiGetData
}
uni.showModal({
title: '读取数据成功',
content: desc,
showCancel: false,
})
},
fail: () => {
uni.showModal({
title: '读取数据失败',
content: '找不到 key 对应的数据',
showCancel: false,
})
},
})
}
},
getStorageSync: function () {
var key = this.key
if (key.length == 0) {
uni.showModal({
title: '读取数据失败',
content: 'key 不能为空',
showCancel: false,
})
} else {
this.apiGetData = uni.getStorageSync(key)
let desc : string = typeof this.apiGetData
if ("object" == desc) {
desc = desc + ": " + JSON.stringify(this.apiGetData)
} else {
desc = desc + ": " + this.apiGetData
}
uni.showModal({
title: '读取数据成功',
content: desc,
showCancel: false,
})
}
},
setStorage: function () {
var key = this.key
var data = this.data
if (key.length == 0) {
uni.showModal({
title: '保存数据失败',
content: 'key 不能为空',
showCancel: false,
})
} else {
uni.setStorage({
key: key,
data: data,
success: () => {
uni.showModal({
title: '存储数据成功',
showCancel: false,
})
},
fail: () => {
uni.showModal({
title: '储存数据失败!',
showCancel: false,
})
},
})
}
},
setStorageSync: function () {
var key = this.key
var data = this.data
if (key.length == 0) {
uni.showModal({
title: '保存数据失败',
content: 'key 不能为空',
showCancel: false,
})
} else {
uni.setStorageSync(key, data)
uni.showModal({
title: '存储数据成功',
showCancel: false,
})
}
},
removeStorage: function () {
uni.removeStorage({
key: this.key,
success: () => {
uni.showModal({
title: '移除数据成功',
showCancel: false,
})
},
fail: () => {
uni.showModal({
title: '移除数据失败',
showCancel: false,
})
},
})
},
removeStorageSync: function () {
uni.removeStorageSync(this.key)
uni.showModal({
title: '移除数据成功',
showCancel: false,
})
},
clearStorage: function () {
this.key = ''
this.data = ''
uni.clearStorage({
success: function (_) {
uni.showModal({
title: '清除数据成功',
showCancel: false,
})
},
fail: function (_) {
uni.showModal({
title: '清除数据失败',
showCancel: false,
})
},
})
},
clearStorageSync: function () {
this.key = ''
this.data = ''
uni.clearStorageSync()
uni.showModal({
title: '清除数据成功',
content: ' ',
showCancel: false,
})
},
jest_saveUTSJSONObject: function () {
const key = 'test_key_saveUTSJSONObject'
uni.setStorageSync(key, {
a: {
b: 1
}
})
const dataSync = uni.getStorageSync(key) as UTSJSONObject
const dataSyncA = dataSync['a'] as UTSJSONObject
this.jest_saveUTSJSONObjectSyncResult = dataSyncA.get('b') as number
uni.getStorage({
key,
success: (res) => {
const dataAsync = res.data as UTSJSONObject
const dataAsyncA = dataAsync['a'] as UTSJSONObject
this.jest_saveUTSJSONObjectAsyncResult = dataAsyncA.get('b') as number
console.log('this.jest_saveUTSJSONObjectSyncResult: ' + this.jest_saveUTSJSONObjectSyncResult)
console.log('this.jest_saveUTSJSONObjectAsyncResult: ' + this.jest_saveUTSJSONObjectAsyncResult)
}
})
},
jest_saveUTSJSONObjectArray() {
const key = 'test_key_saveUTSJSONObjectArray'
uni.setStorageSync(key, [{
a: 1
}] as UTSJSONObject[])
const dataSync = uni.getStorageSync(key) as UTSJSONObject[]
this.jest_saveUTSJSONObjectArraySyncResult = dataSync[0].get('a') as number
},
goto(){
uni.navigateTo({
url:"/pages/API/storage/storagemanage"
})
}
}
}
</script>
<style>
</style>