1.什么时候使用setStorage 什么时候使用setStorageSync?
前者为异步操作,后者为同步操作,若后续的操作依赖于更改storage后的数据,则需要同步,否则后续操作执行时还是使用的未更新的数据。若后续操作无需用到更改的storage数据,则不需要立即同步,这时用异步操作即可,节省内存。
uni.setStorage, H5端是缓存,可能会被清理;App端不是缓存,是持久化
2.uni.login非异步而 uni.request是异步,使用async 、await注意
uni.login使用 await,需用用Promise包装:
const js_code = await new Promise((resolve, reject) => {
// uni.login非异步,所以用Promise包装
uni.login({
provider: 'weixin',
success: res => {
resolve(res.code);
},
fail: err => {
reject(err);
}
});
uni.request是异步,已被uniapp包装为Promise,可以直接使用await:
const [error, res] = await uni.request({
// uni.request异步方法
url: url,
method: 'GET'
});
3.uni-app 传递大量参数时 (在传递大量参数时,推荐用方法二)
方法一:
传递参数:
let content = {
id: 123,
title: '文章',
createTime:'2021-12-23'
}
uni.navigateTo({
url: '/pages/strategy/fx?content=' + JSON.stringify(content)
})
接收参数:
onLoad(val) {
let date= JSON.parse(val.content);
},
这种方法有一种缺陷,在传递大量参数时可能会造成数据截断或者数据不全的问题,导致接收数据页面无法正确拿到参数,这时就可以用方法二来解决
方法二:
传递参数:
let content = {
id: 123,
title: '文章',
createTime:'2021-12-23'
}
let data = JSON.stringify(content);
uni.navigateTo({
url: `/pages/strategy/fx?content=${encodeURIComponent(data)}`
})
接收参数:
onLoad(val) {
let data= JSON.parse(decodeURIComponent(val.content));
},