首页 > 其他分享 >vue2的混入mixin使用

vue2的混入mixin使用

时间:2024-05-21 14:51:30浏览次数:9  
标签:混入 mixin mixins vue2 组件 data methods

前言

vue3中不再推荐使用mixins !

在 Vue 2 中,mixins 是创建可重用组件逻辑的主要方式。尽管在 Vue 3 中保留了 mixins 支持,但对于组件间的逻辑复用,使用组合式 API 的组合式函数是现在更推荐的方式。

参考文档:

混入的优点

可复用性强,方便提高组件代码复用,不用传递状态,可以修改一个地方引起全局都被修改的效果。

混入的缺点

  1. 不清晰的数据来源:当使用了多个 mixin 时,实例上的数据属性来自哪个 mixin 变得不清晰,这使追溯实现和理解组件行为变得困难。这也是推荐在组合式函数中使用 ref + 解构模式的理由:让属性的来源在消费组件时一目了然。
  2. 命名空间冲突:多个来自不同作者的 mixin 可能会注册相同的属性名,造成命名冲突。若使用组合式函数,你可以通过在解构变量时对变量进行重命名来避免相同的键名。
  3. 隐式的跨 mixin 交流:多个 mixin 需要依赖共享的属性名来进行相互作用,这使得它们隐性地耦合在一起。而一个组合式函数的返回值可以作为另一个组合式函数的参数被传入,像普通函数那样。

mixin 使用方法

下面开始介绍混入的使用方法。

1.  在src下新建mixins文件夹,然后新建一个空白js文件

2. .vue文件的结构如下,把其中的script部分复制出来,放到刚才的testMixin.js中

test.vue

<template>
    <div>
        <h1>Mixins</h1>
    </div>
</template>

<script>
export default {
    components: {},
    data() {
       return{}
    },
    mounted() { },
    computed: {},
    methods: {

    },
}
</script>
<style scoped></style>

 testMixin.js

export default {
  data() {
    return {};
  },
  mounted() {},
  computed: {},
  methods: {},
};

  3. 在test.vue中引入mixins文件

此时我们就可以使用testMixin.js中的内容了。当然现在mixin中的内容都是空的,所以下一步是增加testMixin.js中的内容。

Mixins特性:

  1. 生命周期方法重复时合并执行,但混入对象的钩子将在组件自身钩子之前调用。
  2. 变量和方法发生冲突时,优先用组件内部的变量/方法(组件的data、methods、filters会覆盖mixins里的同名data、methods、filters)
  3. mixin可以定义公用的变量或方法,但是mixin中的数据是独立不共享的,即每个组件中的mixin实例都不一样,是单独存在的个体,不存在相互影响;
  4. 不同mixin里的同名方法,按照引进的顺序,最后的覆盖前面的同名方法。

特性1:生命周期方法重复时合并执行,但混入对象的钩子将在组件自身钩子之前调用。

 执行结果:

 特性2:变量和方法发生冲突时,优先用组件内部的变量/方法,(组件的data、methods、filters会覆盖mixins里的同名data、methods、filters)

 运行结果:

 

标签:混入,mixin,mixins,vue2,组件,data,methods
From: https://www.cnblogs.com/sunshine233/p/18203961

相关文章

  • vue2 使用echarts实现地图点击进入下一层级+点击空白处回退
    先验知识:vue2中echarts的安装和显示中国地图:https://www.cnblogs.com/sunshine233/p/16140522.html鼠标事件: https://echarts.apache.org/zh/api.html#echartsInstance.onecharts.getMap():https://echarts.apache.org/zh/api.html#echarts.getMap监听“空白处”的事件:https:/......
  • vue2小效果的实现
    代码量:100行左右搏客量:1所用时间:1h<!--components文件中的Person.vue--><template><divclass="person"><h2>姓名:{{name}}</h2><h2>年龄:{{age}}</h2><button@click="changeName">......
  • Vue2入门之超详细教程十七-常用内置命令集合
    Vue2入门之超详细教程十四-常用内置指令集合1、简介常用内置指令集合v-bind:单向绑定解析表达式,可简写为:xxxv-model:双向数据绑定v-for:遍历数组/对象/字符串v-on:绑定时间监听,可简写为@v-if:条件渲染(动态控制节点是否存在)v-else:条件渲染(动态控制节点是否存在)v-show:条件渲染......
  • vue2使用elementUI组件el-tooltip指定元素进行提示信息(图标显示信息)
     <el-table-columnprop="operation"label="操作"borderwidth="200px"><templateslot-scope="scope"><divclass="operation-icons"><!......
  • 生命周期---Vue2&Vue3
    生命周期---Vue2&Vue3简单理解为:组件从创建到被销毁的一个过程,就相当于人的一生,从出生到死亡的一个过程。组件的生命周期也称生命周期、生命周期函数、生命周期钩子生命周期在特定的时刻会调用特定的函数生命周期分为四个阶段,每个阶段都有两个钩子,现只讨论这八个钩子V......
  • wps加载项在vue2项目中的应用(publish模式)
    wps加载项在vue2项目中的应用应用代码:wps.js/***WPSOA助手-WPS启动方法入口*/varpluginsMode=location.search.split("=")[1];//截取url中的参数值varpluginType=WpsInvoke.ClientType.wps;//加载项类型wps,et,wppvarpluginName="WpsOAAssist";//加载项名......
  • 关于vue2自己得到的陈果(不懂的知识点)
    ref引用相关的知识点:ref='ruleRef'this.$refs.ruleRef.resetFields()        只针对表单的重置this,$refs.ruleRef.validate(valid=>{    这里validate是进行一次检验,参数是一个回调函数,valid是一个布尔值,表示表单的检验是否通过if(!valid)......
  • Vue入门到关门之Vue2高级用法
    一、在vue项目中使用ref属性ref属性是Vue.js中用于获取对DOM元素或组件实例的引用的属性。通过在普通标签上或组件上添加ref属性,我们可以在JavaScript代码中使用this.$refs.xxx来访问对应的DOM元素或组件实例。放在普通标签上,通过this.$refs.名字---》取到的是do......
  • Vue2工程化介绍
    Vue2项目[基于vue-cli]工程化【一】环境搭建06-Vue-cli-刘清政-博客园(cnblogs.com)安装node使用npm/cnpmnpm换源:npmconfigsetregistryhttps://registry.npmmirror.com安装vue-clicnpminstall-g@vue/cli#安装脚手架cnpminstall-g@vue/cli#切换目录......
  • vue2-事件总线$bus的使用
    作用实现不同组件之间进行通信(非父子关系)。 原理$bus就是vue原型上添加的一个vue实例,用于存储、监听以及触发事件。 实现步骤在main.js文件中注册事件总线Vue.prototype.$bus=newVue();在需要发送信息的组件中发送事件this.$bus.$emit("eventname")//无参......