0


uniapp onLoad生命周期 uni.$on接受参数无法改变data数据解决办法

问题阐述:

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来跨页面传参,只适合以下情况

a页面->b页面 
a页面$on('name',()=>{setTimeout(()=>{})})  b页面$emit
也就是说$on监视器声明一定要在触发前才能用

解决方法

如果想要实现a->b传值可以这样

a: uni.navigateTo({url: url,success:(res)=>{
          res.eventChannel.emit("data", data);},});b:onLoad(){const eventChannel =this.getOpenerEventChannel();
    eventChannel.on("data",(res)=>{});},
标签: uni-app

本文转载自: https://blog.csdn.net/weixin_43907110/article/details/132583710
版权归原作者 小吴头大 所有, 如有侵权,请联系我们删除。

“uniapp onLoad生命周期 uni.$on接受参数无法改变data数据解决办法”的评论:

还没有评论