微信小程序-页面导航

269 阅读3分钟
  • 1.页面导航指的是页面之间的相互跳转。例如,浏览器中实现导航的方式有如下两种:

    • 1.<a>链接
    • 2.location.href
  • 2.小程序中实现页面导航的两种方式

    • 1.声明式导航
      • 在页面上声明一个<navigator>导航组件
      • 通过点击<navigator>组件实现页面跳转
    • 2.编程式导航
      • 调用小程序的导航API,实现页面的跳转

声明式导航

  • 1.导航到tabBar页面
    • tabBar 页面指的是被配置为tabBar的页面
    • 在使用 <navigator> 组件跳转到指定的tabBar 页面时,需要指定url属性和open-type属性,其中:
      • url 表示要跳转的页面的地址,必须以/开头
      • open-type 表示跳转的方式,必须为switchTab
<navigator url="/pages/plant/plant" open-type="switchTab">导航到plant页面</navigator>
  • 2.导航到非tabBar页面
    • 非tabBar页面指的是没有被配置为tabBar的页面
    • 在使用<navigator>组件跳转到普通的非tabBar页面时,则需要指定url属性和open-type属性,其中:
    • url表示要跳转的页面的地址,必须以/开头
    • open-type 表示跳转的方式,必须为navigate <navigator url="/pages/pro/pro" open-type="navigate">导航到pro页面</navigator>
      或 简写为
      <navigator url="/pages/pro/pro">导航到pro页面</navigator>
  • 3.后退导航
    • 如果要后退到上一页面或多级页面,则需要指定 open-type 属性和 delta 属性,其中:
    • open-type的值必须是navigateBack,表示要进行后退导航
    • dalta的值必须是数字,表示要后退的层级
      <navigator open-type="navigateBack" delta="1">返回到上一页</navigator> 如果只是后退到上一页面,则可以省略delta属性,因为其默认值就是1<navigator open-type="navigateBack">返回到上一页</navigator>

编程式导航

  • 1.导航到tabBar页面
    • 调用wx.switchTab(Object object)方法,可以跳转到tabBar页面。其中参数对象的属性列表如下: image.png
--- xxx.wxml ---
<button bindtap="gotPlant">跳转到plant页面</button>
--- xxx.json ---
gotPlant(){
    wx.switchTab({
        url: '/pages/plant/plant',
    })
},
  • 2.导航到非tabBar页面
    • 调用wx.navigateTo(Object object)方法,可以跳转到非tabBar的页面。其中Object参数对象的属性列表如下:

image.png

--- xxx.wxml ---
<button bindtap="gotPro">跳转到pro页面</button>
--- xxx.json ---
gotPro(){
     wx.navigateTo({
        url: '/pages/pro/pro',
    })
},
  • 3.后退导航
    • 调用wx.navigateBack(Object object)方法,可以返回上一页面或多级页面。其中Object参数对象可选的属性列表如下:

image.png

--- xxx.wxml ---
<button bindtap="gotoBack">后退页面</button>
--- xxx.json ---
gotoBack(){
     wx.navigateBack()
},

导航传参

  • 1.声明式导航传参 navigator 组件的url属性用来指定将要跳转到的页面的路径。同时,路径的后面还可以携带参数:

    • 参数与路径之间使用 ? 分隔
    • 参数键与参数值用 = 相连
    • 不同参数用 & 分隔
    <navigator url = '/pages/info/info?name=zs&age=20'>跳转到info页面</navigator>
    
  • 完成了传参

image.png

  • 2.编程式导航传参 调用wx.navigateTo(Object object)方法跳转页面时,也可以携带参数,
//页面结构
<button bindtap="gotTest">跳转到Test页面</button>
gotTest(){
//通过编程式导航,跳转到info 页面,并携带参数
wx.navigateTo({
    url: '/pages/test/test?name=zs&age=20',
    })
},
  • 3.在onLoad中接收导航参数 通过声明式导航传参或编程式导航传参所携带的参数,可以直接在onLoad事件中直接获取到,示例代码如下
data: {

    query:{}

},

onLoad:function(options){
    //options 就是导航传递过来的参数对象
    console.log(options)
}

image.png

  • 数据保存到data中
onLoad(options) {
    console.log(options)
    this.setData({
        query : options
    })
},

image.png