vue-router 居然在小版本号中引入破坏性更改

2022-11-04 12:31:50 +08:00
 lllyglh
大部分使用 vue 的 应该避免不了使用 vue-router

官方教程中提到 可以使用 router.push({ name: 'user', params: { username } }) 的方式传参,

但是现在这个 params 居然在小版本号中移除了,甚至没更新教程,这对于初学 vue-router 的新手的积极性是一个很大的打击。

官方教程链接: https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location

Github 讨论链接(已被关闭):https://github.com/vuejs/router/issues/1527
5187 次点击
所在节点    程序员
43 条回复
renmu
2022-11-04 12:51:45 +08:00
我一直以为只有命名路由才能使用 params 参数。
我觉得大概率是哪个开发者也是这么认为,然后改代码的时候解决了这个"bug""。

其实文档写了用于 named route
// named route with params to let the router build the url router.push({ name: 'user', params: { username: 'eduardo' } })
liuxu
2022-11-04 12:53:15 +08:00
那就换 react 吧
Torpedo
2022-11-04 12:54:18 +08:00
这直接干掉一个 api ,有点随意了
kwh
2022-11-04 12:54:40 +08:00
flutter 携带面向对象,多端共用,性能优秀,大厂品质,来势汹汹
thinkershare
2022-11-04 12:54:52 +08:00
这种 fix 性质的更新引入 Breaking Change 的确比较烦,一些方便的特性就是反模式的,为了规范就要移除这些反模式的支持。但开源程序就是这样,自己不爽就再造一个轮子,如此循环。
liuzhaowei55
2022-11-04 12:59:34 +08:00
这也说明在项目开发中锁版本是一件很重要的事情,愉快的去掉 package 中的 ^ ~ 吧,想要忽略小版本,定义版本时忽略掉不写那个小版本就好了
wu67
2022-11-04 13:06:57 +08:00
同上. 新的库还是锁版本比较好.
别说什么出来好久了, 现在绝大部分项目还在 vue2 生态, vue3 生态目前就是半踩坑状态, 如果你同时还用着 element-plus, 那就更能体会到我说什么了. 从 1.*到 2.*极其痛苦, 从 2.0 往后, 补丁版本也很痛苦....半年前到几个月前, 在为爱发电的我, 简直就是地铁老人手机脸...
gouflv
2022-11-04 13:09:15 +08:00
OP 理解了一半就还以为是个大新闻,看完 issue 其实就移除了一个反模式而已

回过头说,既然都爱吹 vue 又快又好,那出些小问题也不碍事
939630029
2022-11-04 13:39:38 +08:00
你这么使用这个 api 本来就是不被推荐这么使用的啊,正确的用法应该是用 query...应该仔细读读 vue router 文档
xutao881
2022-11-04 13:39:42 +08:00
@gouflv “一个反模式而已”???这个 API 在实际项目中的使用率并不低,这种都不算大新闻,什么算?文档和行为不一致不算大新闻什么算?
939630029
2022-11-04 13:46:31 +08:00
你们喷这个 api ,都仔细看过文档吗,vue 文档并没有推荐这样子使用这个 api ,并且文档上也明确写了:"named route with params to let the router build the url"。楼主这种场景,应该直接使用 query ,而不是使用 params
gouflv
2022-11-04 13:54:12 +08:00
@xutao881 看来你和 op 一样,没看懂 issue 和 changlog
hcwhan
2022-11-04 14:05:04 +08:00
$route.params 是用来匹配路由中的动态路由的
gouflv
2022-11-04 14:05:20 +08:00
@939630029 +1 ,难怪说 vue 是前端娱乐圈,官方和用户都有责任
hcwhan
2022-11-04 14:10:12 +08:00
现在是把 反模式的 (手动指定的 不存在与路由中的参数 过滤掉了) 现实项目中重来没见过这种用法 刚去建立了 一个 4.1.3 和 4.1.4 的项目试了下 才知道还可以这样 你的目的是路由跳转的时候传递数据 但是这个数据本身有不存在与路由路径中 肯定是不建议通过自定义不存在的 params key 的形式 我理解 之前这样使用算是 bug 现在只是修复了这个 文档中未定义的 bug params 本身还是正常的
zhzy0077
2022-11-04 14:11:11 +08:00
楼上一直在讨论这么写究竟对不对,属于是根本没看过 semver 的,这个改动放到一个 major 版本上我拍手叫好,摆在一个 patch 的版本里就是不符合 semver
hcwhan
2022-11-04 14:11:44 +08:00
至于想在路由跳转的时候传递数据 又不想通过路由 解决方案官方列了 4 个
hcwhan
2022-11-04 14:14:10 +08:00
@zhzy0077 这个本身使用方式就是未定义的 我理解原来能这样用就算是 bug 现在只是修复了 $route 本身就代表了路由的只读描述 之前这样用等于手动修改只读变量 现在不让改了而已
wangxiaoaer
2022-11-04 14:15:34 +08:00
有啥问题吗????????这是什么破坏性?

如果你打算更新类库( vue )版本,更新好、编译好后不测试的????

版本不兼容这些事情不是很正常吗? 至于这个不兼容是不是必要、有没有替代方案才值得讨论吧。
mozhizhu
2022-11-04 14:15:52 +08:00
不规范导致踩进坑了嘛。要嘛锁定版本,要嘛自己规范代码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/892613

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX