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) => {
    
    });

  },
相关推荐
天蓝色的鱼鱼12 小时前
从“死了么”到“我在”:用uniCloud开发一款温暖人心的App
前端·uni-app
小徐_233312 小时前
uni-app 组件库 Wot UI 的 AI 友好型编程指南
前端·uni-app
CHB1 天前
uni-app x 蒸汽模式 性能测试基准报告 Benchmark
uni-app·harmonyos
anyup1 天前
月销 8000+,uView Pro 让 uni-app 跨端开发提速 10 倍
前端·uni-app·开源
willow5 天前
uniapp实战
uni-app
只会cv的前端攻城狮5 天前
兼容性地狱-Uniapp钉钉小程序环境隔离踩坑实录
前端·uni-app
codingWhat6 天前
小程序里「嵌」H5:一套完整可落地的 WebView 集成方案
前端·uni-app·webview
小时前端8 天前
微信小程序选不了本地文件?用 web-view + H5 一招搞定
前端·微信小程序·uni-app
Mr_li8 天前
给 Vue 开发者的 uni-app 快速指南
vue.js·uni-app
anyup8 天前
🔥2026最推荐的跨平台方案:H5/小程序/App/鸿蒙,一套代码搞定
前端·uni-app·harmonyos