vue-编程式跳转-基本跳转

需求:点击按钮跳转

编程式导航:利用js进行跳转,以前学js的时候就是根据location.href进行跳转||

第一种:path路径跳转

第二种

name命名跳转,

那我们之前,点击搜索,不仅仅是要跳转,还要传参

我们用既然要搜索,那么肯定要往输入框里放任意的值,所以放在data里创建一个数据

在事件函数里通过this模板字符串的方式去使用

那么怎么获取呢?

参数多了也可以用上述的写法,但是不方便,所以用对象的写法来写,所以完整的写法更适合传参

二、动态路由传参

name命名的编程式query传参写法

name命名的编程式动态路由传参

确实,路由跳转的方式看起来很多,容易记混。我来帮你**简化记忆**:

一句话总结

> **声明式** = 标签跳转(`<router-link>`)

> **编程式** = JS 代码跳转(`$router.push()` 等)


对比表格

| 类型 | 写法 | 使用场景 |

|------|------|----------|

| **声明式** | `<router-link to="/about">关于</router-link>` | 模板中的链接按钮 |

| **编程式** | `this.$router.push('/about')` | 登录成功后跳转、点击事件等 |


编程式导航的 4 种写法(其实只有 1 个核心)

```javascript

// 1. 字符串路径

this.$router.push('/search')

// 2. 路径对象

this.$router.push({ path: '/search' })

// 3. 命名路由(推荐)

this.$router.push({ name: 'search' })

// 4. 带参数

this.$router.push({ path: '/search', query: { key: 'abc' } })

this.$router.push({ name: 'search', params: { id: 123 } })

```

**核心记忆**:就记 `this.$router.push()`,里面的写法跟 `<router-link :to="...">` 一模一样。


其他常用编程式方法

```javascript

// 前进/后退

this.$router.go(1) // 前进1步

this.$router.go(-1) // 后退1步

this.$router.back() // 后退

// 替换当前历史记录(不能后退)

this.$router.replace('/search')

```


记忆技巧

> **声明式**:`<router-link>` 像 `<a>` 标签

> **编程式**:`$router.push()` 像 `window.location.href`

**不用背全部,记 `push` 就够了**,遇到需要 `replace`、`go` 时再查。

所以我们在做这种搜索跳转问题的时候,也就是编程式导航问题的时候

我们第一步要想到,是用path跳转还是name的方式跳转,;路径短用path

如果用path跳转时query方式传参,还是动态路由的方式传参,有多个参数的时候适合用query传参

编程式导航和声明式导航,都支持查询参数(query)和动态路由参数(params)两种传参方式。

但是,具体的语法写法 决定了你是否能使用 params 对象。

    • 字符串语法:两者都支持(需要手动拼在 URL 中)。

    • 对象语法:只有 name 写法同时支持 paramsquerypath 写法只支持 query,不支持 params

所以最稳妥、最推荐的做法是:使用 name + params + query,无论在声明式还是编程式导航中。

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