uni-app的坑

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));
},
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值