vue router children 路由变了 组件没变_vue-router 基础:动态路由切换相同组件的场景示例...

3a936b14031a51a15ca1d32c50a997ee.png

前言

《vue 基础》系列是再次回炉 vue 记的笔记,除了官网那部分知识点外,还会加入自己的一些理解。(里面会有部分和官网相同的文案,有经验的同学择感兴趣的阅读)

动态路由

所谓动态路由,就是以冒号 :xxx 来定义地址某部分的路由,通常是基于 Restful 规范,比如下面使用动态的 id 定义的地址:

ebc60e8884d56bf8492dfb857245111c.png

问题

相信经验丰富的你一定遇到过这样的问题:明明地址变了,但组件没有重新进行“刷新”?

我们可以通过 vue 的生命周期来验证组件是否会重新渲染

68f342b9c42626c5df99428af194ed24.png

当我每次通过 button 触发 changeRouterUrl 方法来进行 id 的累加使得 url 发生变化。但 created 一直没有执行第二次。

61046a78c87368582e67adf221a3622f.gif

一个简单的 gif

那怎么解决的?


解决

我们知道当定义好 Vue.use(Router); 后,我们就能在实例化后的 vue 中,通过 this.$route 路由对象来获取相关属性了。

知道这点后,就通过 watch 来监听 $route 对象即可。

同时也能用 $route 中对应的 to、from 概念对应上 watch 接受的 newVal、oldVal 两个变化前后的参数。

c3df02ce85366255014d03ad99e98a73.png
412e7ade6ae164afa21b2ca25f1dc432.gif

一个简单的 gif

这样就能在每次动态路由改动时,通过监听 $route 来自定义需要刷新组件那部分的数据了。

总结

一个很简单的例子,希望能帮到遇到此类问题的同学。

虽然官方给出了相关例子,但更多类似的问题我们还是能根据已有的 vue 知识储备来解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值