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

vue之mixin混入

vue之mixin混入

mixin是什么?

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

感觉有点难以理解,其实简单来说:就是将组件的公共逻辑或者配置提取出来,哪个组件需要用到,直接将提取的这部分混入到组件内部即可,提取的是逻辑或配置,而不是HTML代码和CSS代码。

mixin的特点

mixin中的数据和方法都是独立的,组件之间使用后是互相不影响的。

使用

1.定义mixin.js文件

mixin是一个对象,但是本身也是有生命周期的,可以定义属性和方法等

export const mixins = {
  data() {
    return {
      msg: "我是原本的结果",
    };
  },
  computed: {},
  created() {
    console.log("我是mixin中的created生命周期函数");
  },
  mounted() {
    console.log("我是mixin中的mounted生命周期函数");
  },
  methods: {
    clickMe() {
      console.log("我是mixin中的点击事件");
    },
  },
};

mixin.js中的msg,clickMe在混入其他组件后都可以直接使用。

2.局部混入

index.vue文件

<template>
  <div id="app">
    <button @click="clickMe">点击我</button>
    <button @click="changeMsg">更改mixin数据</button>
	点击更换的数据:{{msg}}
    <demo></demo>
  </div>
</template>

<script>
import { mixins } from "@/mixin/index.js";
import demo from "./demo.vue";
export default {
  name: "App",
  mixins: [mixins],
  components: { demo },
  created() {
    console.log("组件调用minxi数据", this.msg);
  },
  mounted() {
    console.log("我是组件的mounted生命周期函数");
  },
  methods: {
    changeMsg() {
      this.msg = "我是点击后的结果";
      console.log("更改后的msg:", this.msg);
    },
  },
};
</script>

在混入mixin.js同时导入一个混入过的demo.vue组件,来验证一下同一个数据之间是否相互影响。
demo.vue

<template>
  <div>mixin中的数据:{{ msg }}</div>
</template>
<script>
import { mixins } from "@/mixin/index.js";
export default {
  mixins: [mixins],
};
</script>

在这里插入图片描述
经过测试发现是不影响的。

3.生命周期的执行顺序:

在这里插入图片描述
这是没有带入demo组件时候,生命周期的执行顺序:
在这里插入图片描述
导入demo组件后的生命周期:
在这里插入图片描述

4.冲突

如果属性名或者方法名冲突的话如何执行呢?四个字总结就是就近原则,组件本身有会覆盖混入的。

5.全局混入

在main.js中导入注册即可

import { mixins } from "@/mixin/index.js";
Vue.mixin(mixins);


http://www.kler.cn/a/154492.html

相关文章:

  • Ubuntu24 上安装搜狗输入法
  • 外网访问 WebDav 服务
  • IDEA2024:右下角显示内存
  • 智能化运维与AI/ML辅助决策:实现自动化与预测优化
  • torchvision库在进行图片转换操作中报antialias参数没有显式设置会导致不同图片后端中的值不统一的警告信息
  • AI大模型(一):Prompt AI编程
  • 005、简单页面-容器组件
  • IDC MarketScape2023年分布式数据库报告:OceanBase位列“领导者”类别,产品能力突出
  • MySQL- CRUD-单表查询
  • Redis集群详解
  • gRPC Java、Go、PHP使用例子
  • 我爱上这38个酷炫的数据大屏(附 Python 源码)
  • ⭐ Unity 里让 Shader 动画在 Scene 面板被持续刷新
  • spring boot定时器实现定时同步数据
  • 深入理解Java中继承的高级使用方案
  • 不可抗力因素包括什么内容
  • 编译ubuntu kernel
  • 软件工程 - 第8章 面向对象建模 - 4 - 物理体系结构建模
  • 【Android知识笔记】性能优化专题(五)
  • php 中生成订单号
  • Adobe Bridge——牵线搭桥
  • 【ArcGIS Pro微课1000例】0040:ArcGIS Pro创建北极点、南极点
  • pandas基础操作2
  • Jmeter分布式压测
  • 基于PAM自定义ssh登陆认证
  • Linux expect命令详解