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

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

今天询问了学长,更加深刻的理解的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

 

同理

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
平遥古城在哪 平遥古城基本现状 城垣恢宏,雉堞连云市井街巷,店肆林立四合院落,青砖瓦屋这里是平遥古城历经千年沧桑而古朴宛然,风姿依旧...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
平遥古城在哪 平遥古城基本现状 城垣恢宏,雉堞连云市井街巷,店肆林立四合院落,青砖瓦屋这里是平遥古城历经千年沧桑而古朴宛然,风姿依旧...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...