上一篇文章中我对mixin的使用进行了一个使用和测试,这里对extend进行一个使用,其实extend和mixin还是有区别的。
上一篇文章:vue2:mixin混入的使用-CSDN博客
不过也是看实际的业务场景,我们也可以使用extend完成和mixin几乎一摸一样的操作。
不废话,上代码
创建extendTest.js文件
export default{data(){return{extendVal:'extend的值',obj:{name:'wangjingtao',age:18}}},methods:{changeVal(){this.value ++},add(){this.obj.age++}}
}
创建一个常规的组件
<template><div><p>继承的值:{{ extendVal }}</p><p>继承姓名:{{ obj.name }}</p><p>继承年龄:{{ obj.age }}</p><p>组件值:{{ value }}</p><el-button @click="add">大一岁</el-button><el-button @click="changeVal">修改组件值</el-button></div>
</template>
<script>
import exTendTest from '@/utils/extendTest.js'
export default {name: 'ExtendCom',extends: exTendTest,data(){return{value:10}},
}
</script>
<style scoped lang="less"></style>
创建父组件,并引入两个同样的子组件对比
<template><div><h4>继承extend模块1</h4><ExtendCom></ExtendCom><h4>继承extend模块2</h4><ExtendCom></ExtendCom></div>
</template>
<script>
import ExtendCom from './extendCom.vue';
export default {name: 'extend',components: {ExtendCom,}
}
</script>
<style scoped lang="less"></style>
效果
结论
和mixin一样,extend也可以实现对公共值和公共函数的引用,并且对每一个组件来说,这个值都具有封闭性,不会因为多个组件的使用而造成数据污染。