vue动态子组件的实现方式

前端开发 作者: 2024-08-20 21:20:01
让多个组件使用同一个挂载点,并动态切换,这就是动态组件。 通过使用保留的 <component>元素,动态地绑定到它的 is 特性,可以实现动态组件。 方式一:局部注册所需组件
<div id="example">
  button @click="change">切换页面</buttoncomponent :is="currentView"></component>
div>
script>
var home = {template:'<div>我是主页</div>};
 post <div>我是提交页</div> archive <div>我是存档页</div>new Vue({
  el: #example,components: {
    home,post,archive,},data:{
    index:0homepostarchive],computed:{
    currentView(){
        return this.arr[.index];
    }
  },methods:{
    change(){
      .index  (++.index)%3;
    }
  }
})
>
keep-alive>
    >  
  >
home v-if="index===0"homeposts v-else-if="index===1"postsarchive v-elsearchive<div>我是主页/div>`},
    posts:{template:`我是提交页    archive:{template:`我是存档页  },methods:{
    change(){
      let len  Object.keys(.$options.components).length;
      len;
    }
  }
})
>
="currentView" @pass-data="getData"> 
  p>{{msg}}''div>`,1)">        activated(){
          .$emit(pass-data主页被添加);
        },deactivated(){
          主页被移除      {template:`div>`}
    ],1)"> len = .arr.length;
       len;
    },getData(value){
      .msg  value;
      setTimeout(()=>{
        ;
      },1)">500)
    }
  }
})
>
<!-- 逗号分隔字符串 -->
keep-alive include="a,b"="view" 正则表达式 (使用 v-bind) :include="/a|b/" Array (use v-bind) ="['a','b']">
="home,archive">
 asyncComponents(templateName){
    this.curNavComponents = require(`./components/${templateName}.vue`).default;
}
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_65726.html