• 超级码客 超级码客
  • 首页
  • 题库▿
    • 数据结构与算法面试题 ( 2619 + )
    • Java工程师面试题 ( 6548 + )
    • 前端工程师面试题 ( 6906 + )
    • Python工程师面试题 ( 4195 + )
    • C++工程师面试题 ( 4458 + )
    • Android工程师面试题 ( 3217 + )
    • IOS工程师面试题 ( 2330 + )
    • PHP工程师面试题 ( 3790 + )
    • C#工程师面试题 ( 3411 + )
    • Golang工程师面试题 ( 3522 + )
    • 分布式微服务面试题(中高级) ★ ( 2847 + )
    • 运维+DevOPS工程师面试题 ( 3463 + )
    • 大数据工程师面试题 ( 3093 + )
    • 数据库工程师面试题 ( 3246 + )
    • 软件测试工程师面试题 ( 2402 + )
    • 网络通讯工程师面试题 ( 1768 + )
  • 笔试
    • 算法数据结构笔试  ( 1200 + )
    • Java 笔试题  ( 1000 + )
    • 前端笔试题  ( 800 + )
    • PHP 笔试题  ( 150 + )
    • Python 笔试题  ( 150 + )
    • C++ 笔试题  ( 1200 + )
    • C# 笔试题  ( 180 + )
    • Golang 笔试题  ( 150 + )
    • 数据库笔试题  ( 800 + )
    • 运维笔试题  ( 260 + )
    • 网络通讯笔试题  ( 900 + )
    • 分布式笔试题  ( 80 + )
    • Android 笔试题  ( 120 + )
    • IOS 笔试题  ( 120 + )
    • 大数据 笔试题  ( 160 + )
    • 软件测试笔试题  ( 100 + )
  • 宝典
  • 专栏
  • 大厂题
    • 互联网大厂面试真题资料下载 📥
    • 互联网企业历年真题卷 (面试题)
    • 互联网企业历年真题卷 (笔试题)
  • 标签
  • 模拟
  • 组卷
  • 下载
  • 码客
    • Java 编程 ( 1297 篇 )
    • PHP 编程 ( 3397 篇 )
    • Python 编程 ( 1330 篇 )
    • 前端开发 ( 9328 篇 )
    • C / C++ ( 1375 篇 )
    • C# 编程 ( 904 篇 )
    • Golang 编程 ( 1144 篇 )
    • 数据库开发 ( 4549 篇 )
    • Linux 运维 ( 2346 篇 )
    • Docker容器 ( 1489 篇 )
    • 网络安全 ( 789 篇 )
    • Git代码协同 ( 1498 篇 )
    • 更多分类
  • 文档
    • IT图谱资料下载
    • Java资料下载
    • PHP资料下载
    • Python资料下载
    • 前端技术资料下载
    • IOS资料下载
    • DevOps资料下载
    • 公有云资料下载
    • C++专区资料下载
    • 数据库资料下载
    • 大数据资料下载
    • 架构设计资料下载
    • 职业发展资料下载
    • 更多分类
  • 职场
    • 校园专区
    • IT 职场
    • 发展之路
    • 挨踢人生
    • 面试经验
    • 资格考证
  • 书籍
  • 简历
  • 🎁VIP
       uniapp子组件跳转页面带参数
    2025-03-19 08:35:18  [ 作者:PHPz ]  阅读数:2581

        

    Uniapp作为一个跨平台的开发框架,其提供了非常方便的组件化开发方式,允许我们将页面拆分成小而简洁的子组件,从而提高了代码的可维护性和可扩展性。但是,在实际开发中,我们会遇到需要在子组件中进行页面跳转并且需要传递参数的情况,这就需要我们对Uniapp中的路由和传参机制有一定的了解。

    一、Uniapp路由

    Uniapp中的路由机制使用的是vue-router,因此它支持 Vue.js 的原生路由定义和 API。我们知道,路由在前端应用中负责页面之间的跳转,Uniapp提供了两种路由模式:

    1. H5模式:通过URL的方式进行路由跳转,底层采用的是history API。
    2. APP模式:通过原生APP的框架进行路由跳转,底层采用的是Native API。

    Uniapp中定义路由的方式和Vue.js相同,我们在router文件夹下的index.js中进行路由的定义。我们以一个简单的例子来说明一下:

    //router/index.js
    
    import Vue from 'vue'
    import Router from 'vue-router'
    import HelloWorld from '@/components/HelloWorld'
    
    Vue.use(Router)
    
    export default new Router({
      routes: [
        {
          path: '/',
          name: 'HelloWorld',
          component: HelloWorld
        }
      ]
    })

    上面的代码定义了一个路由规则,将根目录指向HelloWorld组件。该组件将在我们访问项目的根路由时被渲染至页面。在实际开发中,我们需要根据具体业务需求来定义路由规则。

    二、页面跳转

    1. 声明式导航:通过在模板中使用router-link标签来跳转到其他页面。
    <template>
      <div>
        <router-link to="/">HelloWorld</router-link>
        <router-link to="/About">About</router-link>
      </div>
    </template>
    1. 编程式导航:通过$router.push或者$router.replace方法来跳转到其他页面。
    <template>
      <div>
        <button @click="gotoAbout()">去About页面</button>
      </div>
    </template>
    
    <script>
    export default {
      data(){
        return {}
      },
      methods:{
        gotoAbout(){
          this.$router.push("/About")
        }
      }
    }
    </script>

    三、页面传参

    在uniapp中,页面传参和Vue.js一样,其实就是通过query、params、meta和props等属性来完成。不过有一点需要注意的是,在uniapp中路由跳转的时候,建议使用params来传递参数。因为query一般会被用来在URL中传递参数,而在原生APP中还需要处理页面恢复的情况,所以建议使用params。

    1. 通过router-link标签传参
    <template>
      <div>
        <router-link :to="{name: 'About', params: {id: 1, name: '张三'}}">About</router-link>
      </div>
    </template>
    1. 通过编程式导航传参
    <template>
      <div>
        <button @click="gotoAbout()">去About页面</button>
      </div>
    </template>
    
    <script>
    export default {
      data(){
        return {}
      },
      methods:{
        gotoAbout(){
          this.$router.push({name: 'About', params: {id: 1, name: '张三'}})
        }
      }
    }
    </script>
    1. 在路由规则中定义路由参数
    //router/index.js
    
    import Vue from 'vue'
    import Router from 'vue-router'
    import HelloWorld from '@/components/HelloWorld'
    import About from '@/components/About'
    
    Vue.use(Router)
    
    export default new Router({
      routes: [
        {
          path: '/',
          name: 'HelloWorld',
          component: HelloWorld
        },
        {
          path: '/About/:id/:name',
          name: 'About',
          component: About
        }
      ]
    })

    在路由规则中定义了id和name两个参数,我们可以在组件内通过this.$route.params来获取参数。