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

问题阐述:

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

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

解决方法

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

javascript 复制代码
a: uni.navigateTo({
        url: url,
        success: (res) => {
          res.eventChannel.emit("data", data);
        },
      });
b:  onLoad() {
    const eventChannel = this.getOpenerEventChannel();
    eventChannel.on("data", (res) => {
    
    });

  },
相关推荐
森之鸟10 分钟前
uniapp——配置鸿蒙环境,进行真机调试
华为·uni-app·harmonyos
2501_915918413 小时前
常见 iOS 抓包工具的使用,从代理抓包、设备抓包到数据流抓包
android·ios·小程序·https·uni-app·iphone·webview
handsome09164 小时前
uniapp打包的app,报This app was built with the iOS 18.1 SDK解决方案
ios·uni-app
yqcoder5 小时前
uni-app 之 下拉刷新
运维·服务器·uni-app
liu_bees8 小时前
微信小程序Canvas生成图片失败:canvas is empty问题解析
微信小程序·小程序·uni-app·vue
木子啊8 小时前
Uni-app性能优化:分包与长列表实战
性能优化·uni-app
yqcoder9 小时前
uni-app 之 设置 tabBar
运维·服务器·uni-app
家里有只小肥猫10 小时前
uniApp下拉渐变头部 拿来即用
前端·javascript·uni-app
fanruitian20 小时前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
fanruitian1 天前
uniapp 创建项目
javascript·vue.js·uni-app