写点什么

vue 中 mixins 的使用方法和注意点

作者:源字节1号
  • 2022 年 6 月 12 日
  • 本文字数:925 字

    阅读完需:约 3 分钟

vue中mixins的使用方法和注意点

混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项

举个例子

子组件 A

<template>    <!-- 子组件A -->    <div class="views__home__sub-model-a"></div></template>

<script>import mixin from './mixin.js';
export default { mixins: [mixin], mounted() { console.log('sub-model-a', 'mounted'); }};</script>
复制代码

子组件 B

<template>    <!-- 子组件B -->    <div class="views__home__sub-model-b"></div></template>

<script>import mixin from './mixin.js';
export default { mixins: [mixin], mounted() { console.log('sub-model-b', 'mounted'); }};</script>
复制代码

mixin.js

export default {    mounted() {        console.log('mixin', 'mounted');    }};
复制代码

打印结果



可以看见生命周期钩子一般都是先执行 mixin 里面的方法,然后才到组件的方法。那么问题就来了,万一 mixin 和组件的选项冲突了怎么办呢?

选项合并

当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”。

比如,数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先

这边就只列举 data 选项

子组件 A

<template>    <!-- 子组件A -->    <div class="views__home__sub-model-a"></div></template>

<script>import mixin from './mixin.js';
export default { mixins: [mixin], data() { return { student: { age: 20 } }; }, mounted() { console.log('sub-model-a', this.student); }};</script>
复制代码

mixin.js

export default {    data() {        return {            student: {                name: 'xiaoming',                age: 10            }        };    },    mounted() {        console.log('mixin', this.student);    }};
复制代码

打印结果



可以看出来 student 对象进行了合并,age 是冲突的并且以组件的为准。


如若转载,请注明出处:开源字节   https://sourcebyte.cn/article/158.html

用户头像

源字节1号

关注

一个着迷于技术又喜欢不断折腾的技术活跃者 2022.03.09 加入

一个着迷于技术又喜欢不断折腾的技术活跃者。喜欢并热爱编程,执着于努力之后所带来的美好生活!

评论

发布
暂无评论
vue中mixins的使用方法和注意点_软件开发_源字节1号_InfoQ写作社区