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,无论在声明式还是编程式导航中。

相关推荐
程序员黑豆4 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
剪刀石头布啊4 小时前
antd中可编辑表格中巧用useWatch实现联动高性能效果,以及定制延伸学习
前端
油丶酸萝卜别吃5 小时前
前端转全栈学习路线
前端·学习
浮生望5 小时前
前端路由进阶:History API原理与手写HistoryRouter
前端
陆枫Larry6 小时前
JavaScript 中的竞态是什么,为啥会有竟态?
前端
上海安当技术8 小时前
半天接入:USBKey RESTful API + C 动态库,Web 和 C/S 两套集成路径实战
前端·后端·restful·集成·usbkey
DevUI团队8 小时前
从“即兴创作”到“规格先行”,华为云码道(CodeArts)代码智能体持续深耕企业级规范驱动开发能力
前端·人工智能·后端
weixin_431600449 小时前
NestJS 入门(3):Guard 如何挡住未登录请求?
前端·后端·学习·nest.js
avi91119 小时前
[AI教做人]AI平台做2项目;一个3D模型展示,另一个框架多人
javascript·人工智能·ai·3d模型·3d引擎·顶点和法线
kyriewen9 小时前
我用Claude Code两天干完了团队两周的排期——周报发出去那一刻我就后悔了
前端·javascript·ai编程