• 【router-view】切换组件 深刻理解用法 vue的设计思想


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

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

     

    同理

     

  • 相关阅读:
    leetcode 刷题 log day 49
    Python-进程和线程
    网络——IPV4地址(二)
    Java Stream API详解:高效处理集合数据的利器
    【分布式能源的选址与定容】基于非支配排序多目标粒子群优化算法求解分布式能源的选址与定容附Matlab代码
    C语言练习之消失的数字(两种解法)
    【微信小程序】自定义组件(二)
    Mybatis--动态sql
    html+css 通过div模拟出一个表格样式,优化多个边框导致的宽度计算问题
    yolo系列的Neck模块
  • 原文地址:https://blog.csdn.net/m0_62742402/article/details/127913755