美文网首页
uni-app项目中的页面跳转方式

uni-app项目中的页面跳转方式

作者: Spinach | 来源:发表于2022-06-14 10:57 被阅读0次

    uniapp页面跳转

    官方详情介绍
    uni-app的页面跳转只能跳转本地页面,且目标页面必须在pages.json中注册。跳转方式与小程序/vue的极为相似,只是方法和标签有所不同,分为\color{red}{标签跳转}\color{red}{方法跳转}两种。

    一、标签跳转:

    类似Vue的<router-link>标签

    <navigator url="...?key=value">页面跳转</navigator>
    
    二、事件方法跳转

    类似Vue router.push({ path: 'xxx' }) 方法,uni-app提供了6钟不同的跳转方式,以uni.xxx方式调用。
    官网详情

    uni.navigateTo(object)

    保留当前页面,跳转到应用内的某个页面,可使用uni.navigateBack返回到原页面
    object参数说明(其他跳转方式的参数与之大同小异):

    uni.navigateTo(OBJECT)
    e.g.
    uni.navigateTo({
        url: 'route?key1=value1&key2=value2'   
    });
    

    接收数据(其他跳转方式的接收参数方法与之相同):

    onLoad: function (option) { 
      //option为object类型,会序列化上个页面传递的参数
      console.log(option.key1); //输出 value1
      console.log(option.key2); //输出 value2
    }
    
    uni.redirectTo(object)

    关闭当前页面,跳转到应用内的某个页面 ,可理解为重定向页面

    uni.redirectTo({
        url: 'route?key1=value1&key2=value2'   
    });
    
    
    uni.reLaunch(object)

    关闭所有页面,跳转到应用内的某个页面
    注意: 如果调用了 uni.preloadPage(OBJECT)不会关闭,仅触发生命周期 onHide

    uni.reLaunch({
        url:  'route?key1=value1&key2=value2'   
    });
    
    uni.switchTab(object)

    跳转到tabBar页面,并 关闭所有非tabBar页面
    注意: 如果调用了 uni.preloadPage(OBJECT)不会关闭,仅触发生命周期 onHide

    uni.switchTab({
        url: '/pages/index/index'
    });
    
    uni.navigateBack(object)

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

    uni.navigateBack({
        delta: 3//返回上上上个页面
    });
    
    uni.preloadPage

    预加载页面,是一种性能优化技术。被预载的页面,在打开时速度更快。
    平台差异说明:


    image.png

    H5 平台:
    预加载 /pages/test/test 对应的js文件,不执行页面预渲染逻辑

    uni.preloadPage({url: "/pages/test/test"});
    

    App-nvue 平台:
    预加载nvue页面 /pages/test/test

    uni.preloadPage({url: "/pages/test/test"});
    

    注意事项

    1. App平台仅支持预加载 nvue 页面,执行页面预渲染,预载时触发生命周期 onLoadonReady,不触发 onShow
    2. 打开新页面时,url 完全相同(包含参数)时,优先使用预加载页面,触发生命周期 onShow
    3. tabbar页面,仅支持预加载尚未显示过的页面,否则返回 fail,提示 already exists
    4. 同一时间,相同 url 仅 preloadPage 一次
    5. 当同一个预载页面已被打开(在路由栈),再次打开相同url时,不再使用该预加载页面,而是打开新的非预载页面
    6. uni.reLanuch, uni.switchTab, uni.navigateBack(含Android返回键) 切换页面时,预加载页面不会被销毁,仅触发生命周期 onHide
    7. 在预载页面使用 uni.redirectTo 时,预加载页面会被销毁,触发生命周期 onUnload

    e.g.

    uni.preloadPage({url: "/pages/test/test"}); // 预加载 /pages/test/test 页面(仅触发onLoad,onReady)
    uni.navigateTo({url: "/pages/test/test"}); // url匹配,跳转预加载页面(仅触发onShow)
    uni.navigateTo({url: "/pages/test/test?a=b"}); // url不匹配,正常打开新页面
    
    

    HBuilderX 2.7.12+的hello uni-app,在navigator示例和uni ui的日历示例中增加了页面预载示例。

    相关文章

      网友评论

          本文标题:uni-app项目中的页面跳转方式

          本文链接:https://www.haomeiwen.com/subject/tqxzmrtx.html