• vue2学习之动态组件


    目录

    1 动态组件

    1.1 内部组件component 组件的使用

    1.1.1 概念和使用

    1.1.2 运行截图

    1.2 内部组件 keep-alive 组件的使用

    1.2.1概念和使用

    1.2.2 运行在vue的哪个生命周期?

    1.2.3 组件的注册名称和name名称

    1 动态组件

    1.1 内部组件component 组件的使用

    1.1.1 概念和使用

    • Vue内部提供的组件component组件作用是:实现动态的渲染组件,按需显示组件。

    • component 标签是 vue 内置的,作用:组件的占位符

    • is 属性的值,表示要渲染的组件的名字

    • is 属性的值,应该是组件在 components 节点下的注册名称

    • 比如我们这里有两个组件Left和Right,需求:在app根组件中点击按钮可以按需显示组件。

    • 下面是部分关键代码:

    1. <template>
    2.  <div class="app-container">
    3.    <h1>App 根组件h1>
    4.    <hr />
    5.    <button @click="comName = 'Left' ">展示Left组件button>
    6.    <button @click="comName = 'Right' ">展示Right组件button>
    7.    <div class="box">
    8.      
    9.      <keep-alive>
    10.        <component :is="comName">component>
    11.      keep-alive>
    12.    div>
    13.  div>
    14. template>
    15. <script>
    16. import Left from '@/components/Left.vue'
    17. import Right from '@/components/Right.vue'
    18. export default {
    19.    data(){
    20.    return{
    21.      comName:'Left'
    22.   }
    23. },
    24.    components:{
    25.    Right,
    26.    Left
    27. },
    28. }
    29.    
    30. script>

    1.1.2 运行截图

    默认显示Left组件

     点击展示,显示Right组件:

    1.2 内部组件 keep-alive 组件的使用

    1.2.1概念和使用

    • keep-alive 会把内部的组件进行缓存,而不是销毁组件;

    • 在使用 keep-alive 的时候,可以通过 include 指定哪些组件需要被缓存;

    • 或者,通过 exclude 属性指定哪些组件不需要被缓存;但是:不要同时使用 include 和 exclude 这两个属性

    keep-alive组件直接包裹component组件,即可实现默认包裹的都会缓存,而不是切换到Right组件,再切回来,Lift组件就要重新创建。

    1. "MyRight">
    2.     :is="comName">
    3. </keep-alive>

    当我们切换到Right组件时候,Right组件会缓存着,这样我们切换回来,Left组件的操作还在着:

     

    1.2.2 运行在vue的哪个生命周期?

    • 当组件第一次被创建的时候,既会执行 created 生命周期,也会执行 activated 生命周期

    • 当组件被激活的时候,只会触发 activated 生命周期,不再触发 created。因为组件没有被重新创建

    1. <script>
    2. export default {
    3.  name: 'MyLeft',
    4.  data() {
    5.    return {
    6.      count: 0
    7.   }
    8. },
    9.  created() {
    10.    console.log('Left 组件被创建了!')
    11. },
    12.  destroyed() {
    13.    console.log('Left 组件被销毁了~~~')
    14. },
    15.  // 当组件第一次被创建的时候,既会执行 created 生命周期,也会执行 activated 生命周期
    16.  // 组件被激活的时候,只会触发 activated 生命周期,不再触发 created。因为组件没有被重新创建
    17.  activated() {
    18.    console.log('组件被激活了,activated')
    19. },
    20.  deactivated() {
    21.    console.log('组件被缓存了,deactivated')
    22. }
    23. }
    24. script>

    (1)当组件第一次被创建的时候,既会执行 created 生命周期,也会执行 activated 生命周期:

    (2)当组件被激活的时候,只会触发 activated 生命周期,不再触发 created。因为组件没有被重新创建:

    1.2.3 组件的注册名称和name名称

    如果在“声明组件”的时候,没有为组件指定 name 名称,则组件的名称默认就是“注册时候的名称”

    components: {
        // 如果在“声明组件”的时候,没有为组件指定 name 名称,则组件的名称默认就是“注册时候的名称”
        Left,
        Right
      }

     

    如果给组件一个name名,那么在调试的时候,和keep-alive指定名字的时候就要使用这个name名。

    一般在开发都会给组件一个name名,注册名只是在使用组件时候使用一下。

    1. export default {
    2. name: 'MyLeft',
    3. }
    4. "MyRight">
    5.      :is="comName">
    6. </keep-alive>

    文章持续更新中,觉得有用的话给个关注吧。

    星月前端博客https://xingyue.vercel.app/

    记录前端学习笔记,欢迎收藏或者提意见。

  • 相关阅读:
    【软件安装】docker 安装 elasticsearch 和 kibana
    PCB电路板去耦电容配置原则有哪些?
    五分钟了解MES与MOM的区别和联系
    jdk8u201版本cpu.load过高问题的排查和解决
    xilinx zynq7系列加载器无法连接的原因&测试xilinx Zynq7开发板的加载器和芯片是否正常的快速方法
    Python编程 集合
    AI天后,在线飙歌,人工智能AI孙燕姿模型应用实践,复刻《遥远的歌》,原唱晴子(Python3.10)
    Python进阶篇:百度指数解密【抓包|JS逆向|数据区分】
    华为机试 - 考勤信息
    Win11终端管理员打不开解决方法
  • 原文地址:https://blog.csdn.net/qq_61950936/article/details/126044553