问题阐述:
a: uni.$emit('name',data)
uni.navigateTo({url:b})
b:onload(){
uni.$on('name',(res)=>{
this.name=res
console.log(this.name)
})
}
用以上写法来跨页面传参会发现在b页面,虽然能够接受到参数但是赋值到data时候没生效,虽然控制台能够打印出数据,但是页面上面并不会动态改变。用setTimeout包裹也没有用
如果想要用$emit和 $on来跨页面传参,只适合以下情况文章来源:https://www.toymoban.com/news/detail-683832.html
a页面->b页面
a页面$on('name',()=>{
setTimeout(()=>{})
}) b页面$emit
也就是说$on监视器声明一定要在触发前才能用
解决方法
如果想要实现a->b传值可以这样文章来源地址https://www.toymoban.com/news/detail-683832.html
a: uni.navigateTo({
url: url,
success: (res) => {
res.eventChannel.emit("data", data);
},
});
b: onLoad() {
const eventChannel = this.getOpenerEventChannel();
eventChannel.on("data", (res) => {
});
},
到了这里,关于uniapp onLoad生命周期 uni.$on接受参数无法改变data数据解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!