1
renmu 2022-11-04 12:51:45 +08:00 via Android
我一直以为只有命名路由才能使用 params 参数。
我觉得大概率是哪个开发者也是这么认为,然后改代码的时候解决了这个"bug""。 其实文档写了用于 named route // named route with params to let the router build the url router.push({ name: 'user', params: { username: 'eduardo' } }) |
2
liuxu 2022-11-04 12:53:15 +08:00
那就换 react 吧
|
3
Torpedo 2022-11-04 12:54:18 +08:00
这直接干掉一个 api ,有点随意了
|
4
kwh 2022-11-04 12:54:40 +08:00
flutter 携带面向对象,多端共用,性能优秀,大厂品质,来势汹汹
|
5
thinkershare 2022-11-04 12:54:52 +08:00
这种 fix 性质的更新引入 Breaking Change 的确比较烦,一些方便的特性就是反模式的,为了规范就要移除这些反模式的支持。但开源程序就是这样,自己不爽就再造一个轮子,如此循环。
|
6
liuzhaowei55 2022-11-04 12:59:34 +08:00 via iPhone
这也说明在项目开发中锁版本是一件很重要的事情,愉快的去掉 package 中的 ^ ~ 吧,想要忽略小版本,定义版本时忽略掉不写那个小版本就好了
|
7
wu67 2022-11-04 13:06:57 +08:00
同上. 新的库还是锁版本比较好.
别说什么出来好久了, 现在绝大部分项目还在 vue2 生态, vue3 生态目前就是半踩坑状态, 如果你同时还用着 element-plus, 那就更能体会到我说什么了. 从 1.*到 2.*极其痛苦, 从 2.0 往后, 补丁版本也很痛苦....半年前到几个月前, 在为爱发电的我, 简直就是地铁老人手机脸... |
8
gouflv 2022-11-04 13:09:15 +08:00 via iPhone
OP 理解了一半就还以为是个大新闻,看完 issue 其实就移除了一个反模式而已
回过头说,既然都爱吹 vue 又快又好,那出些小问题也不碍事 |
9
939630029 2022-11-04 13:39:38 +08:00
你这么使用这个 api 本来就是不被推荐这么使用的啊,正确的用法应该是用 query...应该仔细读读 vue router 文档
|
10
xutao881 2022-11-04 13:39:42 +08:00
@gouflv “一个反模式而已”???这个 API 在实际项目中的使用率并不低,这种都不算大新闻,什么算?文档和行为不一致不算大新闻什么算?
|
11
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
|
13
hcwhan 2022-11-04 14:05:04 +08:00
$route.params 是用来匹配路由中的动态路由的
|
15
hcwhan 2022-11-04 14:10:12 +08:00
现在是把 反模式的 (手动指定的 不存在与路由中的参数 过滤掉了) 现实项目中重来没见过这种用法 刚去建立了 一个 4.1.3 和 4.1.4 的项目试了下 才知道还可以这样 你的目的是路由跳转的时候传递数据 但是这个数据本身有不存在与路由路径中 肯定是不建议通过自定义不存在的 params key 的形式 我理解 之前这样使用算是 bug 现在只是修复了这个 文档中未定义的 bug params 本身还是正常的
|
16
zhzy0077 2022-11-04 14:11:11 +08:00
楼上一直在讨论这么写究竟对不对,属于是根本没看过 semver 的,这个改动放到一个 major 版本上我拍手叫好,摆在一个 patch 的版本里就是不符合 semver
|
17
hcwhan 2022-11-04 14:11:44 +08:00
至于想在路由跳转的时候传递数据 又不想通过路由 解决方案官方列了 4 个
|
18
hcwhan 2022-11-04 14:14:10 +08:00
@zhzy0077 这个本身使用方式就是未定义的 我理解原来能这样用就算是 bug 现在只是修复了 $route 本身就代表了路由的只读描述 之前这样用等于手动修改只读变量 现在不让改了而已
|
19
wangxiaoaer 2022-11-04 14:15:34 +08:00
有啥问题吗????????这是什么破坏性?
如果你打算更新类库( vue )版本,更新好、编译好后不测试的???? 版本不兼容这些事情不是很正常吗? 至于这个不兼容是不是必要、有没有替代方案才值得讨论吧。 |
20
mozhizhu 2022-11-04 14:15:52 +08:00
不规范导致踩进坑了嘛。要嘛锁定版本,要嘛自己规范代码
|
21
shintendo 2022-11-04 14:16:59 +08:00
OP 搞个大新闻,哪有移除 params ,只能说改了一个未定义行为,只不过这个未定义行为被广泛使用了
|
23
hcwhan 2022-11-04 14:20:26 +08:00
@shintendo 这个有被广泛使用吗 路由跳转的时候 通过手动指定非路由 params 传数据 看着就好不规范呀 从没见过这样写的
|
25
Mithril 2022-11-04 14:21:50 +08:00
如果是安全性漏洞,在小版本里引入 breaking change 也是没办法的事。毕竟安全优先。
但你在一个 patch 版本里,为了解决文档不一致问题,引入 breaking change 。 只能说娱乐圈开心就好。 |
26
zhzy0077 2022-11-04 14:22:20 +08:00
@hcwhan semver 的场景里,任何之前能运行的代码在改动后不能运行都是破坏性更改。Java/C++ 那么多未定义的行为,没有一个小版本更新会改动这些结果的,甚至在 C 臭名昭著的 (i++)+(i++) 类型表达式,gcc 在 patch 更新的时候也是不会改变行为的。
|
27
zhzy0077 2022-11-04 14:24:03 +08:00
@shintendo 当然 一个 API 你只要暴露出来了 就不能以文档里没写就不维护吧?最好的选择就是谨慎的选择暴露的 API 范围
|
28
hcwhan 2022-11-04 14:26:52 +08:00
@zhzy0077 你这样理解肯定不对 就算是 semver 改动 是修复 bug 的 那假如我之前写的一个功能依赖于某个 bug 你现在把 bug 修复了 那我的功能就会出问题 我记得之前看到过有一个 lua 代码就是 依赖的 lua 解释器排序算法某种场景下的 bug 那个排序算法 bug 修复后 lua 功能出错了
|
31
shakukansp 2022-11-04 14:35:57 +08:00
vue2 的时候我记得这么写传不过去的
|
32
nomagick 2022-11-04 14:39:04 +08:00
表面看是版本政策问题,本质上是 API 设计问题
|
33
sechi 2022-11-04 14:48:06 +08:00
真就是标题党啊,只看你这个描述我还以为是 push 方法不能传 param 了
|
34
hronro 2022-11-04 15:20:20 +08:00
为啥 Vue 的 issue 里面这么多人用中文啊
|
35
wangtian2020 2022-11-04 15:25:54 +08:00 1
破坏性更改
指我的 build 被破坏的变化 我的 build 不被破坏的不算 |
37
ccyu220 2022-11-04 15:55:28 +08:00
总想搞个大新闻,我还以为是移除了 params 只能使用 query 的方式。
没想到你们一直以来的用法是不声明路由参数就使用 params 传递?那可能就是人的问题了 这是用上框架就把 JS 基础给忘了 |
38
ccyu220 2022-11-04 15:57:56 +08:00
甚至我认为 params 就应该只在传递单个 id 或关键值时使用 ,其它的一概用 query 的方式,更语义化
|
39
marcong95 2022-11-04 16:23:18 +08:00
这个 issue 还挺唬人的,而且没有附 router 的定义。盯着 issue 看了一圈,以为是真的把 params 去掉了。谁知道原来是一堆人在强行往 params 里面塞东西,把 params 当 query 用,还不想 URL 里出现这些内容。
考虑到那个 issue 那么多人用中文,有没有一种可能是那些人没看(没看懂)作者发的 changelog Move the data to an actual param by defining it on the route's path or pass it as query params: this is relevant if you have small pieces of data that can fit in the URL and should be preserved when reloading the page |
40
yuningWang8 2022-11-04 16:45:00 +08:00
确实是个反模式。原来见有人这么用过。印象里文档老早就说过,params 只是用于构建 URL ,不知道为什么会有人用于传参。
|
41
tagtag 2022-11-04 16:58:28 +08:00
又扯什么前端娱乐圈,讨论问题就不能好好讨论吗? OK 啦 ! CRUD Boy !!!
|
43
oldshensheep 2022-11-04 18:24:49 +08:00
初学 Vue 的时候我就**直接**用 params 给组件传参(就是在路由路径上没有这个参数)……
然后发现怎么刷新页面数据就丢失了…… 然后就再也不**直接**用 params 给组件传参了 |