uni-app中uni.redirectTo方法缺少eventChannel属性

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app中uni.redirectTo方法缺少eventChannel属性

操作步骤:

在App.vue中加入代码

uni.redirectTo({
url: "/pages/tabbar/recharge",
success: (res) => {
console.log("success>>>", res.eventChannel);
},
complete: (res) => {
console.log("complete>>>", res.eventChannel);
},
fail: (err) => {
console.error(err);
}
})

预期结果:

回调函数success或complete中的参数带eventChannel属性

实际结果:

回调函数success或complete中的参数没带eventChannel属性

bug描述:

回调函数success或complete中的参数没带eventChannel属性

image

开发环境 版本号 项目创建方式
Mac mac 12.2 HBuilderX
HBuilderX 4.04
Chrome 122.0.6261.129

2 回复

eventChannel 是 和被打开页面进行通信,比如A通过 uni.redirectTo打开了B,A已经已经不存在了


uni-app 中,uni.redirectTo 方法确实没有 eventChannel 属性。eventChanneluni.navigateTo 方法中的一个可选参数,用于在页面跳转时传递数据和事件。

如果你需要在页面跳转时传递数据,可以考虑以下几种替代方案:

1. 使用 uni.navigateTo 代替 uni.redirectTo

如果你不需要关闭当前页面,可以使用 uni.navigateTo,它支持 eventChannel 属性。

uni.navigateTo({
  url: '/pages/targetPage/targetPage',
  events: {
    someEvent: function(data) {
      console.log('Received data:', data);
    }
  },
  success: function(res) {
    res.eventChannel.emit('someEvent', { message: 'Hello from source page' });
  }
});

2. 通过 URL 参数传递数据

你可以通过 URL 参数传递数据,然后在目标页面中解析这些参数。

// 源页面
uni.redirectTo({
  url: '/pages/targetPage/targetPage?message=Hello'
});

// 目标页面
onLoad: function(options) {
  console.log('Received message:', options.message);
}

3. 使用全局变量或 Vuex

你可以使用全局变量或 Vuex 来存储和传递数据。

// 源页面
globalData.message = 'Hello';
uni.redirectTo({
  url: '/pages/targetPage/targetPage'
});

// 目标页面
onLoad: function() {
  console.log('Received message:', globalData.message);
}

4. 使用 uni.$emituni.$on

你可以使用 uni.$emituni.$on 来在页面之间传递事件和数据。

// 源页面
uni.$emit('someEvent', { message: 'Hello' });
uni.redirectTo({
  url: '/pages/targetPage/targetPage'
});

// 目标页面
onLoad: function() {
  uni.$on('someEvent', function(data) {
    console.log('Received message:', data.message);
  });
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!