EventChannel

基础库 2.7.3 开始支持,低版本需做兼容处理。

页面间事件通信通道

方法

EventChannel.emit(string eventName, any args)

触发一个事件

EventChannel.on(string eventName, EventCallback fn)

持续监听一个事件

EventChannel.once(string eventName, EventCallback fn)

监听一个事件一次,触发后失效

EventChannel.off(string eventName, EventCallback fn)

取消监听一个事件。给出第二个参数时,只取消给出的监听函数,否则取消所有监听函数

wx.navigateBack(Object object)

以 Promise 风格 调用:支持

需要页面权限:当前是插件页面时,宿主微信小程序不能调用该接口,反之亦然

微信小程序插件:支持,需要微信小程序基础库版本不低于 2.1.0

在微信小程序插件中使用时,只能在当前插件的页面中调用

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

功能描述

关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面栈,决定需要返回几层。

参数

Object object

属性 类型 默认值 必填 说明
delta number 1 返回的页面数,如果 delta 大于现有页面数,则返回到页面栈中只剩一个页面为止。
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码


// 注意:调用 navigateTo 跳转时,调用该方法的页面会被加入堆栈,而 redirectTo 方法则不会。见下方示例代码

// 此处是A页面
wx.navigateTo({
  url: 'B?id=1'
})

// 此处是B页面
wx.navigateTo({
  url: 'C?id=1'
})

// 在C页面内 navigateBack,将返回A页面
wx.navigateBack({
  delta: 2
})

wx.navigateTo(Object object)

以 Promise 风格 调用:支持

需要页面权限:当前是插件页面时,宿主微信小程序不能调用该接口,反之亦然

微信小程序插件:支持,需要微信小程序基础库版本不低于 2.2.2

在微信小程序插件中使用时,只能在当前插件的页面中调用

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

功能描述

保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。微信小程序中页面栈最多十层。

参数

Object object

属性 类型 默认值 必填 说明
url string 需要跳转的应用内非 tabBar 的页面的路径 (代码包路径), 路径后可以带参数。参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔;如 ‘path?key=value&key2=value2’
events Object 页面间通信接口,用于监听被打开页面发送到当前页面的数据。基础库 2.7.3 开始支持。
routeType string 2.29.2 自定义路由类型,相关文档 自定义路由
routeConfig Object 3.4.0 自定义路由配置,相关文档 自定义路由
routeOptions Object 3.4.0 自定义路由参数,相关文档 自定义路由
withOpenContainer Object 3.12.2 skyline 下指定路由动画所用OpenContainerContext,相关文档 OpenContainerContext
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.success 回调函数

参数
Object res
属性 类型 说明
eventChannel EventChannel 和被打开页面进行通信

示例代码

wx.navigateTo({
  url: 'test?id=1',
  events: {
    // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
    acceptDataFromOpenedPage: function(data) {
      console.log(data)
    },
    someEvent: function(data) {
      console.log(data)
    }
    ...
  },
  success: function(res) {
    // 通过eventChannel向被打开页面传送数据
    res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'test' })
  }
})
//test.js
Page({
  onLoad: function(option){
    console.log(option.query)
    const eventChannel = this.getOpenerEventChannel()
    eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
    eventChannel.emit('someEvent', {data: 'test'});
    // 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
    eventChannel.on('acceptDataFromOpenerPage', function(data) {
      console.log(data)
    })
  }
})

wx.redirectTo(Object object)

以 Promise 风格 调用:支持

需要页面权限:当前是插件页面时,宿主微信小程序不能调用该接口,反之亦然

微信小程序插件:支持,需要微信小程序基础库版本不低于 2.2.2

在微信小程序插件中使用时,只能在当前插件的页面中调用

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

功能描述

关闭当前页面,跳转到应用内的某个页面。但是不允许跳转到 tabbar 页面。

参数

Object object

属性 类型 默认值 必填 说明
url string 需要跳转的应用内非 tabBar 的页面的路径 (代码包路径), 路径后可以带参数。参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔;如 ‘path?key=value&key2=value2’
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

wx.redirectTo({
  url: 'test?id=1'
})

wx.reLaunch(Object object)

基础库 1.1.0 开始支持,低版本需做兼容处理。

以 Promise 风格 调用:支持

需要页面权限:当前是插件页面时,宿主微信小程序不能调用该接口,反之亦然

微信小程序插件:支持,需要微信小程序基础库版本不低于 2.3.1

在微信小程序插件中使用时,只能在当前插件的页面中调用

微信 Windows 版:支持

微信 Mac 版:支持

微信 鸿蒙 OS 版:支持

功能描述

关闭所有页面,打开到应用内的某个页面

参数

Object object

属性 类型 默认值 必填 说明
url string 需要跳转的应用内页面路径 (代码包路径),路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔;如 ‘path?key=value&key2=value2’
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

wx.reLaunch({
  url: 'test?id=1'
})
// test
Page({
  onLoad (option) {
    console.log(option.query)
  }
})

wx.rewriteRoute(Object object)

基础库 3.8.0 开始支持,低版本需做兼容处理。

以 Promise 风格 调用:不支持

微信小程序插件:支持

微信小程序插件中使用时,只能重写目标为当前插件的页面的路由事件

功能描述

重写正在进行中的路由事件,详见 路由重写

参数

Object object

属性 类型 默认值 必填 说明
url string 重写目标页面的路径 (代码包路径), 路径后可以带参数。参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔;如 'path?key=value&key2=value2'
preserveQuery boolean false 是否直接保留当前路由事件的参数,默认为 false;开启时,url 里面传入的参数会被丢弃
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码

wx.onBeforeAppRoute(res => {
  if (res.path === '/pages/do/not/access/me') {
    wx.rewriteRoute({
      url: '/pages/index/index'
    })
  }
})