vue - vue中混入mixin的使用

vue中mixin混入的使用

    • 1,概念
    • 2,使用场景
    • 3,开始使用
    • 4,局部混入和全局混入
    • 5,总结

1,概念

官方解释:

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

其实就是:
vue提供的一种混合机制,能够更好的实现组件功能复用,混合对象(mixins)可以包含任意组件选项(data、created、mounted、methods、filters等),组件引入后相关选项会进行合并,相当于引入后,父组件各属性进行扩充;

2,使用场景

第一种:可复用的一些方法和属性可以放到mixin里面;
第二种:一些特殊的模块处理或逻辑处理可以放到mixin里面;使vue文件上下文逻辑清晰;
第三种:还可以做代码分割,如果一个vue文件的行数太多,可以把一些复杂的操作方法单独放到mixin里面然后引入即可;

注意

1,当组件和混入对象含有同名选项时,这些选项将以恰当的方式进行合并;
2,数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先;

3,开始使用

1,先定义一个mixin文件

先新建一个mixin.js ; 文件名可以随意定义;

在这里插入图片描述上面代码如下:

export const mixin = {
  data() {
    return {
      name: 'Eula',
    };
  },
  // 我是Mixin中的计算属性
  computed: {},

  created() {
    console.log('我是mixin中的created生命周期函数');
  },

  mounted() {
    console.log('我是mixin中的mounted生命周期函数');
  },

  methods: {
    clickMe() {
      console.log('我是mixin中的点击事件');
    },
  },
};

2,组件中引入

引入之后直接 mixins:[mixin],即可使用上面定义的属性和方法,最终会被合并在一起;注意引入里面不要加引号;

注意这里使用的是局部引入方式,后面会介绍全局引入方式;

// 局部混入
import {mixin} from '@/views/routers/mixin'; 

export default {
  mixins:[mixin],
   data() {
    return {
    };
  },
 created() { 
    console.log("我是原本的created生命周期函数");
  },
  mounted() {
    console.log("我是原本的mounted生命周期函数");
    console.log("获取mixin中的data数据:",this.name);
    this.name = '安柏';
    console.log("修改mixin中的data数据:",this.name);
    // 调用mixin中的方法
    this.clickMe()
  },
}

打印结果如下:

在这里插入图片描述


可以看出

  • mixin里面的声明周期都会执行而且还是先执行的
  • 组件可以获取和更改mixin定义的响应式数据
  • 组件可以调用mixin定义的方法
  • mixins与vue文件合并时,会将created等钩子函数合并成数组,mixins的钩子优先调用,当data、methods对象健值冲突时,以组件优先
  • 值为对象的选项,(methods、components 和 directives)将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对

3,mixin的数据在其他不同的组件中不会共享

对于一个混合对象而言,如果mixin同时在组件1和组件2中同时使用;如果组件1对mixin中的数据进行改变了,是不会影响组件2中的数据的;

4,局部混入和全局混入

局部混入就是上面使用的在组件中混入方式:mixins:[mixin]
一般局部混入使用的多;因为全一旦使用全局混入,它将影响每一个之后创建的 Vue 实例(包括第三方组件);请谨慎使用全局混入方式;
大多数情况下,只应当应用于自定义选项,就像上面示例一样。推荐将其作为插件使用,以避免重复应用混入。

全局混入

定义:

let myMixin = {
  data() {
    return {
      name2:'Umbra',
      age:'20'
    };
  }
};

在main.js 里面使用: Vue.mixin()

import {myMixin} from '@/views/routers/myMixin';
Vue.mixin(myMixin)

5,总结

我们可以将 mixin 当做组件模块化,灵活运用组件模块化,可以将组件内的重复代码提取出来,做到代码分割,实现代码复用,也使我们的代码更加清晰,效率也大大提高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/7602.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 自动化指南(繁琐工作自动化)第二版:十七、计时、安排任务和启动程序

原文:https://automatetheboringstuff.com/2e/chapter17/ 坐在电脑前运行程序是没问题的,但让程序在没有你直接监督的情况下运行也很有用。您计算机的时钟可以安排程序在某个指定的时间和日期或定期运行代码。例如,你的程序可以每小时抓取一个…

Python 自动化指南(繁琐工作自动化)第二版:十三、使用 EXCEL 电子表格

原文:https://automatetheboringstuff.com/2e/chapter13/ 虽然我们不经常将电子表格视为编程工具,但几乎每个人都使用它们将信息组织成二维数据结构,用公式执行计算,并以图表的形式产生输出。在接下来的两章中,我们将把…

Window10平台下编译Sqlite3.4

1、下载网址:SQLite Download Page 需要下载如下内容: 我这里下载64位的dll 2、我用的vs2019新建一个windows桌面项目,应用程序类型:动态链接库(.dll),空项目: 3、将如下文件复制到工程目录下,然后添加到工程中 添加到…

动力节点老杜Vue笔记——Vue程序初体验

目录 一、Vue程序初体验 前言 1.1 下载并安装vue.js 1.2 第一个Vue程序 1.3 Vue的data配置项 1.4 Vue的template配置项 一、Vue程序初体验 前言 可以先不去了解Vue框架的发展历史、Vue框架有什么特点、Vue是谁开发的,这些对我们编写Vue程序起不到太大的作…

koa开发实践2:为koa项目添加路由模块

nodeJS server-side-developkoa开发实践2:为koa项目添加路由模块上一节:《 koa开发实践2:为koa项目添加路由模块 》| 下一节:《 koa开发实践3:在koa项目中使用 swagger 文档 》作者: 李俊才:…

哪些是真正的全光谱灯品牌呢?推荐五款全光谱护眼灯

所谓全光谱,就是指灯光的色谱成分无限接近太阳光的色谱成分。我们都知道,太阳光不单单只有一束简单的白光,而是有很多种颜色的单色光复合而成,所以它的色彩显色效果非常丰富、真实,这些单色光也成了太阳光的色谱成分。…

浅谈机器学习--聚类

还不了解机器学习?来看! 目录 一.聚类 二.k均值聚类算法(k-means) 1.k均值聚类算法的流程 二.k均值算法的改进 1.二分k-means算法 2.k-means算法 3.k-medoids算法 4.Mini Batch k-means算法 三.DBSCAN算法 1.​编辑-邻域 2.核心点和边界点 …

关于TextureRender适配的解决方案

当我们用摄像机渲染出一个图片,显示在UI的时候,会发现,你如果自适配,那么就会拉伸图片,导致人物或者场景变形。 我最近就遇到了这个事,这里我给出几种问题和解决方案: 1 :当我们想…

NSSCTF Round#11 --- 密码个人赛 wp

文章目录ez_encMyMessageMyGameez_signinez_facez_enc 题目: ABAABBBAABABAABBABABAABBABAAAABBABABABAAABAAABBAABBBBABBABBABBABABABAABBAABBABAAABBAABBBABABABAAAABBAAABABAABABBABBBABBAAABBBAABABAABBAAAABBBAAAABAABBBAABBABABAABABAAAAABBBBABAABBBBAAAAB…

开心档之开发入门网-C++ 变量类型

C 变量类型 目录 C 变量类型 C 中的变量定义 C 中的变量声明 实例 实例 C 中的左值(Lvalues)和右值(Rvalues) 变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有指定的类型,类型决定了变量存储的大小…

Java多线程:线程组

线程组 可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示: 线程组的作用是:可以批量管理线程或线程组对象…

电脑清理怎么做?5个方法帮你解决电脑空间不足的问题!

案例:电脑清理怎么做? 【求一个电脑清理的好方法!电脑垃圾文件太多了又不敢随意删除,怕误删重要的文件!哪位友友可以帮我出出主意呀?到底应该怎么清理电脑呢?】 电脑使用的时间长了都会慢慢变…

(链表)合并两个排序的链表

文章目录前言:问题描述:解题思路:代码实现:总结:前言: 此篇是针对链表的经典练习。 问题描述: 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节…

用队列实现栈和用栈实现队列

目录用队列实现栈创建栈实现入栈实现出栈判空取栈顶元素释放用栈实现队列创建队列入队出队返回队列开头的元素判空释放前面我们实现了栈和队列,其实栈和队列之间是可以相互实现的 下面我们来看一下 用 队列实现栈 和 用栈实现队列 用队列实现栈 使用两个队列实现一…

Windows创建用户,添加到管理员组,添加到远程桌面组、RDP

原因&目的 在获得反弹shell后无法得到明文密码,无法远程桌面登录 在目标机器创建新的账号,且为管理员账号,可以远程桌面登录 cmd /c net user gesila 123 /add cmd /c net localgroup Administrators gesila /add cmd /c net localgro…

优思学院 | 质量工程师的职责有哪些?

质量工程师,是一位肩负着质量管理、质量控制和质量改进使命的职业人员。他们身负使命,不断探究、发现、改进,为企业打造出更加卓越、可靠的产品和服务。 在大多数企业中,质量工程师是一个非常重要的职位,他们的职责在…

智能立体车库plc以太网无线应用

一、项目背景 此项目为平面移动类智能停车库,是以传感器网络为支撑的物联网智能停车管理系统。比较于传统的停车场模式,智能立体车库不仅占地少,空间利用率高,智能化程度高,采用集约化系统化的车位管理、收费管理&…

Vue3 集成Element3、Vue-router、Vuex实战

第一步:使用Vite快速搭建Vue 3项目 基础操作总结: npm init vite-app 项目名称cd 项目名称npm installnpm run dev 温馨提示:如果还是Vue 2 环境请参考:Vue 2 升级Vue3 ,并且使用vsCode 搭建Vue3 开发环境 Vue 3 …

ARM uboot 启动 Linux 内核

一、编译厂商提供的 uboot 此处,我使用的是九鼎提供的 uboot : 二、烧录 uboot 到 SD 卡 进入 uboot 的 sd_fusing 目录,执行命令烧写 uboot : ./sd_fusing.sh /dev/sdb。 三、将 SD 卡插入开发板,进入 uboot 按任意…

操作系统-内存管理

一、总论 1.1 硬件术语 ​ 为了不让读者懵逼(主要是我自己也懵逼),所以特地整理一下在后面会用到术语。 ​ 我们电脑上有个东西叫做内存,他的大小比较小,像我的电脑就是 16 GB 的。它是由 ROM 和 RAM 组成的&#x…