• vue——mixins混入对象


    在参与很大的项目中时,我们会发现很多的组件之间具有相似的功能,比如data,method,watch、mounted等,如果我们在组件中复制粘贴去重复定义这些相同的方法或熟悉就会使项目代码复杂,于是就有了mixins混入对象

    什么是mixins

    mixins是一种分发Vue组件中可复用功能的方式。mixins对象可以包含任何组件选项,当组件使用mixins时,将定义的mixins对象引人组件中即可使用,mixins中的所有选项将会混入到组件自己的选项中。 

    mixins和vuex的区别

    vuex是状态共享管理,因此vuex中的所有变量和方法都是可以读取和更改并相互影响的;mixins中的数据是不共享的,每个组件中的mixins实例都是不一样的,都是单独存在的个体,不存在相互影响。

    mixins的创建与调用

    创建

    在src目录下创建相对应的mixin文件夹,在mixin文件夹下创建对应的miixns文件(为js文件),然后在对象中的可以像定义vue组件一样定义mixins中的data、components、methods 、created、computed等属性,最后用export导出。

     调用

    在组件中导入定义的mixins.js文件,使用mixins:[引入的mixins.js文件名]来使用混入对象中的实例

    mixins使用特点

    1、mixins混入对象的值为函数同名函数时(如created,mounted等)

    会被递归合并并调用,也就是两个函数都会被执行(先执行mixins中的同名函数)。

    下面例子中的两个created()函数都会被执行

    1. // 定义的mixins文件
    2. export const myMixin = {
    3. data () {
    4. return {
    5. num: 1
    6. }
    7. },
    8. created () {
    9. console.log('hello from mixin')
    10. }
    11. }
    1. // 在定义的HelloWorld组件中使用mixins
    2. <script>
    3. import { myMixin } from '../mixin/mixins'
    4. export default {
    5. name: 'HelloWorld',
    6. mixins: [myMixin],
    7. data () {},
    8. created () {
    9. console.log('hello from HelloWorld')
    10. }
    11. }
    12. script>

    执行结果为:

     2、mixins混入对象的值为对象的同名对象时(如methods,components等)

    mixins中的对象会被替换(覆盖),也就是执行组件中的对象,不会执行mixins中的同名对象。

    下面例子里组件的方法中的two()函数覆盖了mixins中定义的two()函数

    1. // 定义的mixins文件
    2. export const myMixin = {
    3. data () {
    4. return {
    5. num: 1
    6. }
    7. },
    8. created () {
    9. this.hello()
    10. },
    11. methods: {
    12. one () {
    13. console.log('one from mixin')
    14. },
    15. toRaw () {
    16. console.log('two from mixin')
    17. }
    18. }
    19. }
    1. //在定义的组件中使用mixins
    2. <script>
    3. import { myMixin } from '../mixin/mixins.js'
    4. export default {
    5. name: 'HelloWorld',
    6. mixins: [myMixin],
    7. data () {},
    8. created () {
    9. this.sele()
    10. this.one()
    11. this.two()
    12. },
    13. methods: {
    14. self () {
    15. console.log('self from HelloWorld')
    16. },
    17. two () {
    18. console.log('two from HelloWorld')
    19. }
    20. }
    21. }
    22. script>

    执行结果为:

  • 相关阅读:
    昇腾CANN 7.0 黑科技:大模型推理部署技术解密
    万字手撕AVL树 | 上百行的旋转你真的会了吗?【超用心超详细图文解释 | 一篇学会AVL】
    10月30日,深圳见!51camera与您相约机器视觉展
    互动设计:深入了解用户体验的关键
    python类
    49.HarmonyOS鸿蒙系统 App(ArkUI)Tab导航组件的使用
    沃创云新一代CRM
    【数据结构-哈希表 一】【原地哈希】:缺失的第一个正整数
    从局部变量说起,关于一个莫得名堂的引用和一个坑!
    编程中的插槽(slot)含义介绍
  • 原文地址:https://blog.csdn.net/TangJing_/article/details/126288197