最近写了个项目,

惊奇发现(可能大惊小怪),在params传递的‘0’和0居然能区分类型,难道不是浏览器地址栏截取的字符串!!

代码大概如下(仅供参考):

router/index.js

.......
{
      path: '/Frame/:userId',
      name: 'Frame',
      component: Frame,
      beforeEnter(to, from, next) {//判断是否存在id
        console.log('beforeEnter',to.params.userId,!!to.params.userId);
        }
}
.....

router-link

<router-link :to="{name:'Frame',params:{userId:0}}"/>//router/index.js返回0,false

<router-link :to="{name:'Frame',params:{userId:'0'}}"/>//router/index.js返回0,true

传数字类型0 router/index.js 返回 beforeEnter, 0,false

传字符串类型0 router/index.js 返回  beforeEnter, 0,true

(我们都知道 !!0 为 fasle,!!'0'为true.............)

浏览器地址栏都显示为:http://localhost:8088/Frame/0

坑:刷新浏览器则类型都是字符串类型的。重试上面的就知道了!!!

没看源码...哪位看过源码的解释一下。

vue很多类似这种刷新就数据丢失的,注意了。写完代码要刷新。要不然你写的变量会没有....

Logo

前往低代码交流专区

更多推荐