Vue动态组件(component :is)-<component :is=““></component>- 案例

Posted JackieDYH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue动态组件(component :is)-<component :is=““></component>- 案例相关的知识,希望对你有一定的参考价值。

将is的值绑定为一个变量,is就变成了v-bind:is="变量名",即 :is="变量名"。当变量名赋值为哪个自定义组件名时,拥有:is=“变量名”属性的元素就会渲染为哪个组件。由于is的值不再是一章节中的静态的值,而是进行了数据绑定,所以绑定的变量要在data中定义过的

示例 

<template>
    <div class="page-header-index-wide">
        <a-card :bordered="false" :bodyStyle=" padding: '16px 0', height: '100%' " :style=" height: '100%' ">
            <div class="account-settings-info-main" :class=" mobile: isMobile ">
                <div class="account-settings-info-left">
                    <a-menu
                        :mode="isMobile ? 'horizontal' : 'inline'"
                        :style=" border: '0', width: isMobile ? '560px' : 'auto' "
                        :selectedKeys="openKeys"
                        type="inner"
                        @click="changeMenu"
                    >
                        <a-menu-item key="BaseSetting">基本设置 </a-menu-item>
                        <a-menu-item key="changePassword">修改密码 </a-menu-item>
                    </a-menu>
                </div>
                <div class="account-settings-info-right">
                    <component :is="isCompenent"> </component>
                </div>
            </div>
        </a-card>
    </div>
</template>

<script>
import  RouteView  from '@/layouts'
import  baseMixin  from '@/store/app-mixin'
import BaseSetting from './BaseSetting' // 页面A
import changePassword from './changePassword' // 页面B
export default 
    components: 
        RouteView,
        BaseSetting,
        changePassword,
    ,
    mixins: [baseMixin],
    data() 
        return 
            // horizontal  inline
            mode: 'inline',
            isCompenent: 'BaseSetting',
            openKeys: ['BaseSetting'],
            selectedKeys: [],
        
    ,
    mounted() ,
    methods: 
        changeMenu(openKeys) 
            this.openKeys = openKeys.keyPath
            this.isCompenent = openKeys.key
        ,
    ,

</script>

<style lang="less" scoped>
...
</style>

以上是关于Vue动态组件(component :is)-<component :is=““></component>- 案例的主要内容,如果未能解决你的问题,请参考以下文章

Vue Component

vue动态组件

vue -- 动态加载组件

vue 组件动态 循环

vue 动态添加组件

189v-bind:is实现动态组件的效果