Vue项目总结(1)--- 在不同路由下,组件样式需要改变的解决方案,动态监听路由变化。

        在项目中遇到一个问题,当进入不同的路由时,根组件的导航栏样式需要改变。

        在主界面时,导航栏样式应为:

        在其他界面时,导航栏样式应为:

        最初解决方案:

        一开始想到的解决方案是,当其他界面的组件创建时,向根组件传递数据,改变导航栏样式(导航栏写在了根组件中) 。

        弊端:①实现起来比较困难;②需要给许多组件配置这个方案,很麻烦

        最终解决方案:

        在需要修改的组件中,通过v-bind指令动态绑定导航栏属性

        初始化样式,且通过this.$route.fullPath来获取当前的地址。

        

        当地址发生变化时,修改导航栏样式。

        

         此时遇到问题:

        发现 path(this.$route.fullPath) 只能获取到第一次进入网页时的路径,当进入不同路由时,path的值不会改变。比如先进入首页,path的值为'/Home',然后进入文章页,本来期望path的值变为'/Article',从而重新渲染导航栏,但是此时发现path的值不会改变,导致导航栏不会被重新渲染。

        解决办法

        通过watch监听路由对象,当路由对象发生变化时,重新给path赋值,并调用要使用的方法。

        ​​​​​​ 

        问题解决!!!

        总结:

        当路由发生变化,需要重新渲染组件时,可以用一个变量获取当前路径。再使用watch来监听路由变化,当发生变化时,重新给该变量赋值,同时调用需要的方法即可。

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值