动态组件和异步组件

动态组件:让多个组件使用同一个挂载点,并动态切换,这就是动态组件

<div id="example">
  <button @click="change">切换页面</button>
  <component :is="currentView"></component>
</div>
<script>
var home = {template:'<div>我是主页</div>'};
var post = {template:'<div>我是提交页</div>'};
var archive = {template:'<div>我是存档页</div>'};
new Vue({
  el: '#example',
  components: {
    home,
    post,
    archive,
  },
  data:{
    index:0,
    arr:['home','post','archive'],
  },
  computed:{
    currentView(){
        return this.arr[this.index];
    }
  },
  methods:{
    change(){
      this.index = (++this.index)%3;
    }
  }
})
</script>

 <keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们

动态组件

vue2.x

 

<template> <div> <button @click="show = true">Load Tooltip</button> <div v-if="show"> <Tooltip /> </div> </div> </template> <script> export default { data: () => ({ show: false }), components: { Tooltip: () => import('./components/Tooltip') } } </script>

 

vue3.x

<template>
  <!-- 异步组件的使用 -->
  <AsyncPage />
</tempate>

<script>
import { defineAsyncComponent } from "vue";

export default {
  components: {
    // 无配置项异步组件
    AsyncPage: defineAsyncComponent(() => import("./NextPage.vue")),

    // 有配置项异步组件
    AsyncPageWithOptions: defineAsyncComponent({
   loader: () => import(".NextPage.vue"),
   delay: 200,
   timeout: 3000,
   errorComponent: () => import("./ErrorComponent.vue"),
   loadingComponent: () => import("./LoadingComponent.vue"),
 })
  },
}
</script>

 

posted @ 2021-10-18 13:57  卡布奇诺。不加糖  阅读(94)  评论(0)    收藏  举报