路由进阶--编程式导航(在Vue路由中实现跳转,跳转传参)

路由进阶--编程式导航(跳转,跳转传参)

文章目录

1、编程式导航

1.1、基本跳转

需求:点击按钮跳转如何实现?

编程式导航:用JS代码来进行跳转

  1. path 路径跳转(简易方便)

    javascript 复制代码
    this.$router.push('路由路径')     //方式1
    
    this.$router.push({     //方式2
       path:'路由路径'
    })
  2. 通过命名路由的方式跳转 (需要给路由起名字) 适合path路径长的情况

    javascript 复制代码
    const router = new VueRouter({
      routes: [
        { name: 'search', path: '/search/:words?', component: Search },
      ]
    })
    javascript 复制代码
    this.$router.push({
       name: '路由名'
    })

    示例:

    vue 复制代码
    <template>
    	<button @click="goSearch">搜索一下</button>
    </template>
    
    <script>
    export default {
      name: 'FindMusic',
      methods: {
        goSearch () {
          // 1. 通过路径的方式跳转
          // (1) this.$router.push('路由路径') [简写]
          // this.$router.push('/search')
    
          // (2) this.$router.push({     [完整写法]
          //         path: '路由路径' 
          //     })
          // this.$router.push({
          //   path: '/search'
          // })
    
          // 2. 通过命名路由的方式跳转 (需要给路由起名字) 适合长路径
          //    this.$router.push({
          //        name: '路由名'
          //    })
          this.$router.push({
            name: 'search'
          })
        }
      }
    }
    </script>

1.2、跳转传参

需求:点击搜索按钮,跳转需要传参如何实现?

两种传参方式:查询参数,动态路由传参

  1. path 路径跳转传参(query传参,动态路径传参)

    query传参:

    javascript 复制代码
        (1)
    	this.$router.push('路由路径') [简写]
        this.$router.push('路由路径?参数名=参数值')
    	//跳转到其他页面接收:$router.query.参数名
    
        (2) 
    	this.$router.push({    // [完整写法] 更适合传参
        path: '路由路径'
        query: {
           参数名: 参数值,
           参数名: 参数值
          }
        })
        //跳转到其他页面接收:$router.query.参数名

    动态路径传参:

    javascript 复制代码
      this.$router.push({
          name: '路由名'
          query: { 参数名: 参数值 },
          params: { 参数名: 参数值 }
      })
      //跳转到其他页面接收:$router.params.参数名    (动态传参就需要配置路由,例如下列代码)
    // const router = new VueRouter({
    //   routes: [
    //     { name: 'search', path: '/search/:参数名?', component: Search }
    //   ]
    // })
  2. name命名路由跳转传参

    query传参:

    javascript 复制代码
     this.$router.push({
         name: '路由名'
         query: { 参数名: 参数值 }
     })
        //跳转到其他页面接收:$router.query.参数名

    动态路径传参:

    javascript 复制代码
     this.$router.push({
         name: '路由名'
         params: { 参数名: 参数值 }
     })
    //跳转到其他页面接收:$router.params.参数名    (动态传参就需要配置路由,例如下列代码)
    // const router = new VueRouter({
    //   routes: [
    //     { name: 'search', path: '/search/:参数名?', component: Search }
    //   ]
    // })
相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
A黄俊辉A4 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄4 天前
JavaScript 隐式全局变量解析
javascript
honkun64 天前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs19914 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net