您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页Vue中的Mixin&extends的使用

Vue中的Mixin&extends的使用

来源:华佗小知识

官方定义MiXin

项目中如何使用Mixin
在src文件夹下创建一个mixins文件夹

export default {
    data() {
        return {
            msg:'mixins 中的data'
        }
    },
    mounted() {
        console.log('mixins 中的mounted');
    },
    methods:{
        foo() {
            console.log('mixins 中的methods');
        }
    },
    computed:{
        message() {
            return 'mixin 中的computed'
        }
    }
}

在Home.vue文件下

<template>
    <div class='home'>
        {{msg}}<br>
        {{message}}<br>
        <button @click="foo">点击按钮</button>
    </div>
</template>

<script>
// 导入js文件
import demomixins from '@/mixins/demomixins.js'
export default {
    name:'Home',
    data() {
        return {
        };
    },
    mixins:[demomixins],	// 混入demomixins对象
    mounted() {
    },
    methods: {},
    components:{},
};
</script>

然我们没有在home.vue中定义msg变量message计算属性foo方法,但是页面中可以显示

Mixin的合并规则

如果Mixin对象中的选项和组件对象中的选项发生了冲突

<template>
    <div class='home'>
        {{msg}}<br>
        {{message}}<br>
        <button @click="foo">点击按钮</button>
    </div>
</template>

<script>
// 导入
import demomixins from '@/mixins/demomixins.js'
export default {
    name:'Home',
    data() {
        return {
            msg:'home 中的data'
        };
    },
    mixins:[demomixins],
    mounted() {
        console.log('home 中的mounted');
    },
    methods:{
        foo() {
            console.log('home 中的methods');
        }
    },
    computed:{
        message() {
            return 'home 中的computed'
        }
    }
};
</script>

全局混入Mixin

如果组件中的某些选项,是所有的组件都需要拥有的,那么这个时候我们可以使用全局的mixin
一旦注册,那么全局混入的选项将会影响每一个组件

const app = createApp(App)
app.mixin({
    data() {
        return {
            msg:'global 中的data'
        }
    },
})

extends

允许一个组件扩展到另一个组件,且继承该组件选项

项目中的用法

在components创建一个组件hello.vue

<script>
export default {
    data() {
        return {
            msg:'hello'
        };
    }
};
</script>

在home.vue中

<template>
    <div class='home'>
        {{msg}}
    </div>
</template>

<script>
// 导入
import my from '@/components/my'
export default {
    name:'Home',
    extends:my,
    data() {
        return {
            
        };
    },
};
</script>

在开发中extends用的非常少,在Vue2中比较推荐大家使用Mixin,而在Vue3中推荐使用Composition API

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务