美文网首页
vue 动态组件

vue 动态组件

作者: lyp82nkl | 来源:发表于2019-07-14 20:54 被阅读0次

component

  • Vue 提供了一个 component 元素,可以用来动态挂载不同的组件,使用 is 特性来切换不同的组件。

需求:通过点击不同的按钮切换不同的视图

  • 准备好四个组件和四个按钮
   <div id="app">
        <component></component>
        <button >1</button>
        <button >2</button>
        <button >3</button>
        <button >4</button>
    </div>

    <script>
       
        Vue.component('compA', {
            template: '<div>离离原上草</div>'
        })
        Vue.component('compB', {
            template: '<div>一岁一枯荣</div>'
        })
        Vue.component('compC', {
            template: '<div>野火烧不尽</div>'
        })
        Vue.component('compD', {
            template: '<div>春风吹又生</div>'
        })


        var app = new Vue({
            el: '#app',
            data: {
               
            },
    </script>
  • 让 component 默认显示 A-component
    <div id="app">
        <component :is="thisView"></component> //用 is 动态绑定 thisView
        <button >1</button>
        <button >2</button>
        <button >3</button>
        <button >4</button>
    </div>
var app = new Vue({
  el: '#app',
  data: {
    thisView: 'A-component'  //  thisView 的值是 A-component
  }
})
  • 添加点击事件,显示不同的诗句(视图)
    <div id="app">
        <component :is="thisView"></component> 用 is 动态绑定 thisView
        <button @click="handView('A')">1</button>
        <button @click="handView('B')">2</button>
        <button @click="handView('C')">3</button>
        <button @click="handView('D')">4</button>
    </div>

 <script>
        //需求:通过点击不同的按钮切换不同的视图
        Vue.component('compA', {
            template: '<div>离离原上草</div>'
        })
        Vue.component('compB', {
            template: '<div>一岁一枯荣</div>'
        })
        Vue.component('compC', {
            template: '<div>野火烧不尽</div>'
        })
        Vue.component('compD', {
            template: '<div>春风吹又生</div>'
        })
        var app = new Vue({
            el: '#app',
            data: {
                thisView :'compA'
            },
            methods: {
                handView: function (tag) {
                    this.thisView = 'comp' + tag
                    console.log(this.thisView)
                }
            }
        })
    </script>

点击不同的按钮,显示不同诗句(视图)。

动态组件的体现

component 元素就是动态的,当你点击第一个按钮,component 就挂载了 compA 组件,点击第二个按钮,component 就挂载了 compB 组件,以此类推。所以,component 就可以看做是一个变来变去(动态)的组件。

相关文章

网友评论

      本文标题:vue 动态组件

      本文链接:https://www.haomeiwen.com/subject/rbvikctx.html