【router-view】切换组件 深刻理解用法 vue的设计思想
创始人
2024-01-29 15:18:54
0

之前学的时候没学明白,导致写项目有些功能的实现上走了歪路。

今天询问了学长,更加深刻的理解的Vue的设计思想。

因为vue是单页面应用,所以学会用router-view来切换频繁变化的地方的组件是非常重要的。

之前,我的一个主页组件由三个子组件构成,简单来讲就像这样:

我的整个项目界面的top和foot是不需要改变的,而body的内容会频繁改变。

我想要在在不同的body组件(即相对于我的main组件来说它的内组件)中进行一些点击操作时更换外部main组件的body部分。

比如我在最开始的body组件中进行了搜索,我就希望搜索按钮点击之后,把body部分换成搜索结果页面的组件。

我一开始的方法是 监听+emit改变外组件的值(我改变的就是body处使用的组件的名字)

当只有一个页面更换时感觉还可以,但其实是比较复杂的。

main组件的组成

     

main组件监听子组件调用方法

        ( 内外组件调用该方法名字必须一致)

子组件点击按钮触发

 

子组件点击事件,emit调用父组件方法

 是可以实现在子组件内部改变外部组件的值,从而更换body处的组件的。

但是仔细想想会发现这非常麻烦。

一开始我也用的没问题,但后来第二个子组件部分需要用到该方法更换组件时,问题就出现了。

我在top组件中,即顶部导航,想要点击网站名称时,body处换位最初的body组件。

一模一样的监听+emit方法,可是在top中就是不响应。

问了学长,说是该方法只能进行第一次更换,后续其他地方继续调用就无法更新了。

并且建议我这里可以直接使用router-view + push的方法切换组件。

这样子才体现了vue的优秀之处。

router-view的响应完全依赖于router的配置,只要配置清楚了,将会十分方便简洁。

弄懂了这点之后非常好改。

只需要在main组件的router声明中,设置children属性,列举后续需要替换到该main组件中处的组件的路径即可。然后就可以直接在声明了的子组件中直接通过this.$router.push({path:'/{{已配置子路径}}'}) 即可。

实际操作展示:

router声明

其中redirect是重定向,在此处声明意思是初始时默认router-view处使用body组件。     

原本复杂的更换方式直接用router-view替换

 

被声明的子组件直接push替换router-view

 

同理

 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...