场景描述

  1. 有些时候,我们发现有些组件部分功能代码是几乎是一样的。
  2. 这个时候,我们就可以将相同的逻辑代码抽离出来
  3. 此时我们的主角混入mixin就登场了
  4. 下面我们有a-testb-test两个组件,点击按钮发生的逻辑是一样的。
  5. 这个时候我们就可以使用混入mixin

a-test代码如下

  1. <template>
  2. <div>
  3. <el-button @click="openHander">点我呀</el-button>
  4. <h2 >我是a-test组件</h2>
  5. <h2>学校: {{ name}}</h2>
  6. <h2> 地址: {{ sex}}</h2>
  7. ============================
  8. </div>
  9. </template>
  10. <script>
  11. import { mixinmethods} from "../mixin.js"
  12. export default {
  13. data(){
  14. return {
  15. name:'xxx科技大学',
  16. sex:'四川'
  17. }
  18. },
  19. // methods:{
  20. // openHander(){
  21. // // 做了一些事情,因为跟b-test组件的功能相同,所以我们使用混入来解决
  22. // }
  23. // }
  24. // mixins是固定的,里面传入一个数组
  25. mixins:[mixinmethods]
  26. }
  27. </script>

b-test组件代码如下

  1. <template>
  2. <div>
  3. <el-button @click="openHander">点我呀</el-button>
  4. <h2>我是b-test组件</h2>
  5. <h2> 学生姓名: {{ name}}</h2>
  6. <h2> 学生性别: {{ sex}}</h2>
  7. </div>
  8. </template>
  9. <script>
  10. import { mixinmethods} from "../mixin.js"
  11. export default {
  12. data(){
  13. return {
  14. name:'李四',
  15. sex:'男'
  16. }
  17. },
  18. // methods:{
  19. // openHander(){
  20. // // 做了一些事情,因为跟a-test组件的功能相同,所以我们使用混入来解决
  21. // }
  22. // }
  23. // mixins是固定的,里面传入一个数组
  24. mixins:[mixinmethods]
  25. }
  26. </script>

mixin.js代码

  1. export const mixinmethods = {
  2. // mixinmethods这个值随便你取
  3. methods:{
  4. openHander(){
  5. // mixin其实就是想将相同的模块抽离出去
  6. alert('混合')
  7. // 可分别拿到组件中的数据
  8. console.log(this.name);
  9. }
  10. }
  11. }

在mixin中写声明周期

  1. export const mixinmethods = {
  2. // mixinmethods这个值随便你取
  3. methods:{
  4. openHander(){
  5. // mixin其实就是想将相同的模块抽离出去
  6. alert('混合')
  7. // 可分别拿到组件中的数据
  8. console.log(this.name);
  9. }
  10. },
  11. // 因为这个混合在两个组件中使用,那么该声明周期就会被执行两次
  12. mounted() {
  13. console.log("我是混合中的生命周期")
  14. }
  15. }

如果混合中的数据与组件中data的数据重复,会保留data中的数据

  1. 如果组件中data数据与混合中的数据重复了,
  2. 使用data中的数据。
  3. 组件中是可以直接使用混合中的数据的。
  4. 需要注意的是:声明周期不会以谁的为主
  5. 如果你在混合总共使用了生命周期,声明周期可能是都会执行。不会以谁的为主
  1. export const mixinmethods = {
  2. data() {
  3. return {
  4. name:'lh',
  5. sex: '男',
  6. age:24
  7. }
  8. },
  9. // mixinmethods这个值随便你取
  10. methods:{
  11. openHander(){
  12. // mixin其实就是想将相同的模块抽离出去
  13. alert('混合')
  14. // 可分别拿到组件中的数据
  15. console.log(this.name);
  16. }
  17. },
  18. // 因为这个混合在两个组件中使用,那么该声明周期就会被执行两次
  19. mounted() {
  20. console.log("我是混合中的生命周期")
  21. }
  22. }
  1. <template>
  2. <div>
  3. <el-button @click="openHander">点我呀</el-button>
  4. <h2 >我是a-test组件</h2>
  5. <h2 >学校: {{ name}}</h2>
  6. <h2> 地址: {{ sex}}</h2>
  7. <h2> 年龄是混合中的数据 {{ age}}</h2>
  8. ============================
  9. </div>
  10. </template>
  11. <script>
  12. import { mixinmethods} from "../mixin.js"
  13. export default {
  14. data(){
  15. return {
  16. name:'xxx科技大学',
  17. sex:'四川'
  18. }
  19. },
  20. // mixins是固定的,里面传入一个数组
  21. mixins:[mixinmethods]
  22. }
  23. </script>

全局混合

  1. main.js中全局引入,
  2. 这样vc,vm都可以得到[这样虽然是全局使用,但是会造成性能浪费]
  3. import {yourkey1,yourkey2} from "./mixn"
  4. Vue.mixin(yourkey1)
  5. Vue.mixin(yourkey2)
  6. 这样你就可以不需要在组件中引入了。直接在组件中使用混合就行
  7. 组件中使用 mixins:[yourkey1]

vue混入mixin的使用,保证你看的明明白白!的更多相关文章

  1. vue 混入 mixin,自定义指令,过滤器

    vue 混入 mixin ,分发 vue 组件中重复的功能 局部的书写格式 // mixin.js var mymixin = {  // 这是一个对象:对象里面的写法与组件里面的写法一模一样,组件该 ...

  2. vue混入 (mixin)的使用

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

  3. 浅析vue混入(mixin)

    vue中的混入,可以在一定程度上提高代码的复用性.通俗来说,混入类似于“继承”,当前组件对象继承于组件对象,一般情况下遵循“就近原则”.但是与继承不同的是,继承一般都跟随着属性的重写与合并,混入在不同 ...

  4. vue下一代状态管理Pinia.js 保证你看的明明白白!

    1.pinia的简单介绍 Pinia最初是在2019年11月左右重新设计使用Composition API的 Vue 商店外观的实验. 从那时起,最初的原则相同,但 Pinia 适用于 Vue 2 和 ...

  5. 国庆总结:echarts自定义颜色主题,保证你看的明明白白

    为什么需要使用颜色主题 随着用户审美越来越高,不再是过去那样只注重功能. 所以对界面的颜色样式都具有一定的审美要求 此时颜色是否好看就非常重要了 因为人都是视觉动物 对界面的第一印象肯定都是颜色. 如 ...

  6. Vue3.2中的setup语法糖,保证你看的明明白白!

    vue3.2 到底更新了什么? 根据原文内容的更新的内容主要有以下 5 块: 1.SSR:服务端渲染优化.@vue/server-renderer包加了一个ES模块创建, 与Node.js解耦,使在非 ...

  7. 应用三:Vue之混入(mixin)与全局混入

    (注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的) 首先介绍一下混入mixin的概念:   官方文档:混入提供了一种非常灵活的方式,来分发 Vu ...

  8. Vue之混入(mixin)与全局混入

    Vue之混入(mixin)与全局混入 接下来通过一个简单的例子看看混入的基础用法: 首先新建一个mixin.js文件,添加以下代码. let mixin = { data() { return { m ...

  9. 用特征来实现混入(mix-in)式的多重继承

    用特征来实现混入(mix-in)式的多重继承 Scala里相当于Java接口的是特征(Trait).Trait的英文意思是特质和性状(本文称其为特征),实际上他比接口还功能强大.与接口不同的是,它还可 ...

随机推荐

  1. ASP.NET Core Web API 教程 - Project Configuration

    ASP.NET Core Web API 教程 本系列文章主要参考了<Ultimate ASP.NET Core 3 Web API>一书,我对原文进行了翻译,同时适当删减.修改了一部分内 ...

  2. Optional容器类

    一.Optional 容器类:用于尽量避免空指针异常 方法 /* * Optional.of(T t) : 创建一个 Optional 实例 * Optional.empty() : 创建一个空的 O ...

  3. expression动态构成

    http://blog.csdn.net/tastelife/article/details/7340205 http://blog.csdn.net/tastelife/article/detail ...

  4. 无序数组求第K大的数

    问题描述 无序数组求第K大的数,其中K从1开始算. 例如:[0,3,1,8,5,2]这个数组,第2大的数是5 OJ可参考:LeetCode_0215_KthLargestElementInAnArra ...

  5. java 工具类 验证码

    第一步: 引入工具类 工具类一: import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import jav ...

  6. c++ 的学习 第二集函数的重载之3 -利用IDA分析bebug里面

    1. 对项目右击,在文件资源管理器中打开文件夹 2.看debug里面的.exe     这个文件 函数的真实的名字 打开.exe文件就是还是显示,,, 3.debug模式有太多的断点信息还有许多不精简 ...

  7. P7514-[省选联考2021A/B卷]卡牌游戏【贪心】

    正题 题目链接:https://www.luogu.com.cn/problem/P7514 题目大意 给出\(n\)个卡牌有\(a_i/b_i\),开始都是\(a_i\)朝上,将不超过\(m\)张卡 ...

  8. JQuery EasyUI 结合ztrIee的后台页面开发

    JQuery EasyUI 结合 zTree树形结构制作web页面.easyui用起来比较简单,很好的封装了jquery的部分功能,使用起来更加方便,但是从1.2.3版本以后,商业用途是需要付费的, ...

  9. 数值计算:粒子群优化算法(PSO)

    PSO 最近需要用上一点最优化相关的理论,特地去查了些PSO算法相关资料,在此记录下学习笔记,附上程序代码.基础知识参考知乎大佬文章,写得很棒! 传送门 背景 起源:1995年,受到鸟群觅食行为的规律 ...

  10. python日志配置及调用

    0.日志基础操作 import logging logging.basicConfig( #1.日志输出的位置,终端和文件 filename='access.log', #,不指定默认打到终端上 #2 ...