当前位置: 首页 > article >正文

Vue 2 混入 (Mixins) 的详细使用指南

1.基本概念

混入 (Mixins) 是 Vue 2 中用于组件代码复用的重要特性,它允许你将可复用的功能分发到多个组件中。
混入是一种灵活的代码复用方式,可以包含任意组件选项(data、methods、生命周期钩子等)。当组件使用混入时,所有混入的选项将被"混合"到组件自身的选项中。

2.创建和使用混入

2.1 创建混入对象

// myMixin.js
export const myMixin = {data() {return {mixinData: '这是混入的数据'}},created() {console.log('混入的created钩子被调用')},methods: {mixinMethod() {console.log('这是混入的方法')}}
}

2.2 局部混入使用

import { myMixin } from './myMixin.js'export default {mixins: [myMixin],created() {console.log('组件的created钩子被调用')this.mixinMethod() // 调用混入的方法console.log(this.mixinData) // 访问混入的数据}
}

2.3 全局混入

// main.js
import Vue from 'vue'
import { myMixin } from './myMixin.js'Vue.mixin(myMixin) // 全局注册,会影响之后创建的每个Vue实例

3.选项合并策略

数据对象 (data)
同名属性会进行递归合并,组件的数据优先

const mixin = {data() {return {message: '混入的消息',foo: 'bar'}}
}new Vue({mixins: [mixin],data() {return {message: '组件的消息',baz: 'qux'}},created() {console.log(this.$data)// { message: "组件的消息", foo: "bar", baz: "qux" }}
})

生命周期钩子
同名钩子函数将合并为数组,混入的钩子先调用:

const mixin = {created() {console.log('混入的created')}
}new Vue({mixins: [mixin],created() {console.log('组件的created')}
})
// 输出顺序:
// 混入的created
// 组件的created

方法、组件和指令等
同名方法/组件/指令将被合并,组件的方法优先:

const mixin = {methods: {foo() {console.log('混入的foo')},conflicting() {console.log('来自混入')}}
}new Vue({mixins: [mixin],methods: {bar() {console.log('组件的bar')},conflicting() {console.log('来自组件')}},created() {this.foo() // "混入的foo"this.bar() // "组件的bar"this.conflicting() // "来自组件"}
})

4.注意事项

在这里插入图片描述

http://www.lryc.cn/news/2386616.html

相关文章:

  • day020-sed和find
  • OpenGL Chan视频学习-4 Vertex Buffers and Drawing a Triangle in OpenGL
  • 数据库事务的四大特性(ACID)
  • 网络安全全知识图谱:威胁、防护、管理与发展趋势详解
  • FreeRTOS 在物联网传感器节点的应用:低功耗实时数据采集与传输方案
  • 解决 iTerm2 中 nvm 不生效的问题(Mac 环境)
  • Linux环境下基于Docker安装 PostgreSQL数据库并配置 pgvector
  • (9)-java+ selenium->元素定位之By name
  • 深浅拷贝?
  • Beckhoff PLC 功能块 FB_CTRL_ACTUAL_VALUE_FILTER (模拟量滤波)
  • Mysql在SQL层面的优化
  • JVM规范之栈帧
  • 【C++指南】string(四):编码
  • 深度学习之序列建模的核心技术:LSTM架构深度解析与优化策略
  • AI量化交易是什么?它是如何重塑金融世界的?
  • 分布式事务处理方案
  • CVE-2024-36467 Zabbix权限提升
  • Dify中的自定义模型插件开发例子:以xinference为例
  • crud方法命名示例
  • 尚硅谷redis7 33-36 redis持久化之RDB优缺点及数据丢失案例
  • No such file or directory: ‘ffprobe‘
  • 计算机网络-WebSocket/DNS/Cookie/Session/Token/Jwt/Nginx
  • 功能“递归模式”在 C# 7.3 中不可用,请使用 8.0 或更高的语言版本的一种兼容处理方案
  • 第4章-操作系统知识
  • 将网页带格式转化为PDF
  • 【ArcGIS】ArcGIS AI 助手----复现
  • 使用 FFmpeg 将视频转换为高质量 GIF(保留原始尺寸和帧率)
  • 《Java vs Go vs C++ vs C:四门编程语言的深度对比》
  • 充电枪IEC62196/EN 62196测试内容
  • 有效的字母异位符--LeetCode