vue2知识点————(声明周期,vue动态组件 )

vue2的知识点,更多前端知识在主页,还有其他知识会持续更新

初始化阶段

beforeCreate:在组件初始化完成后立即调用

会在实例初始化完成,props解析完成之后,data()和computed等选项处理之前立即调用

Created :在组件实例处理完所有状态相关的选项后调用

场景: 网络请求, 注册全局事件

这个钩子被调用时,以下内容已完成设置:响应式数据,计算属性,方法和侦听器,

但是此时挂载阶段未开始,因此$el属性不可用

挂载阶段

beforeMount :在组件被挂载之前调用

这个钩子被调用时,组件已经完成了其相应式状态的设置,但还没有创建dom节点,它即将首次执行dom渲染过程

场景:预处理data,不会触发updata钩子函数

Mounted :在组件被挂载之后调用

场景:挂载后真实DOM

更新阶段

beforeUpdate 在组件即将因为一个响应式状态更而更新其DOM树之前调用

Updated 在组件因为一个响应式状态变更而更新dom树其dom树之后调用

销毁阶段

beforeDestroy() 生命周期钩子函数被执行

在实例销毁之前被调用。在这个阶段,实例仍然完全可用,可以访问到所有数据和方法。

Destrodyed

在实例销毁后被调用。此时,实例中的所有东西都已被解绑定,事件监听器已被移除,所有子实例也已被销毁。

vue动态组件

动态组件在 Vue.js 中是一种非常有用的功能,它允许你根据不同的条件渲染不同的组件。Vue 提供了多种方式来实现动态组件,主要包括以下几种方法:

使用 <component> 元素

Vue 中的 <component> 元素可以动态地绑定到不同的组件上,通过一个属性来指定当前需要渲染的组件。

复制代码
<template>
  <div>
    <component :is="currentComponent"></component>
    <button @click="toggleComponent">Toggle Component</button>
  </div>
</template>

<script>
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';

export default {
  data() {
    return {
      currentComponent: 'ComponentA'
    };
  },
  methods: {
    toggleComponent() {
      this.currentComponent = this.currentComponent === 'ComponentA' ? 'ComponentB' : 'ComponentA';
    }
  },
  components: {
    ComponentA,
    ComponentB
  }
}
</script>

使用 v-ifv-else

通过 v-ifv-else 指令,你可以根据条件切换不同的组件。

复制代码
<template>
  <div>
    <ComponentA v-if="isComponentAVisible" />
    <ComponentB v-else />
    <button @click="toggleComponent">Toggle Component</button>
  </div>
</template>

<script>
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';

export default {
  data() {
    return {
      isComponentAVisible: true
    };
  },
  methods: {
    toggleComponent() {
      this.isComponentAVisible = !this.isComponentAVisible;
    }
  },
  components: {
    ComponentA,
    ComponentB
  }
}
</script>

使用 :is 属性

你也可以在动态组件上直接使用 :is 属性来动态绑定组件名称。

复制代码
<template>
  <div>
    <component :is="currentComponent"></component>
    <button @click="toggleComponent">Toggle Component</button>
  </div>
</template>

<script>
import ComponentA from './ComponentA.vue';
import ComponentB from './ComponentB.vue';

export default {
  data() {
    return {
      currentComponent: ComponentA
    };
  },
  methods: {
    toggleComponent() {
      this.currentComponent = this.currentComponent === ComponentA ? ComponentB : ComponentA;
    }
  },
  components: {
    ComponentA,
    ComponentB
  }
}
</script>
相关推荐
Hello--_--World7 分钟前
VUE:逻辑复用
前端·javascript·vue.js
陶甜也23 分钟前
3D智慧城市:blender建模、骨骼、动画、VUE、threeJs引入渲染,飞行视角,涟漪、人物行走
前端·3d·vue·blender·threejs·模型
患得患失94928 分钟前
【前端websocket】企业级功能清单
前端·websocket·网络协议
落魄江湖行29 分钟前
基础篇四 Nuxt4 全局样式与 CSS 模块
前端·css·typescript·nuxt4
禅思院29 分钟前
前端性能优化:从"术"到"道"的完整修炼指南
前端·架构·前端框架
叫我一声阿雷吧34 分钟前
JS 入门通关手册(43):async/await 原理与异常处理(实战 + 面试,彻底搞懂)
javascript·异常处理·promise·前端面试·async/await·generator·异步编程
架构师老Y2 小时前
003、Python Web框架深度对比:Django vs Flask vs FastAPI
前端·python·django
小陈工4 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
xiaotao1319 小时前
第九章:Vite API 参考手册
前端·vite·前端打包
午安~婉9 小时前
Electron桌面应用聊天(续)
前端·javascript·electron