首页 > 其他分享 >vue 混入 mixins

vue 混入 mixins

时间:2024-06-06 17:23:17浏览次数:14  
标签:混入 vue const mixins divClick 组件 属性

vue2写法

mixins.js

import {reactive} from "vue";

export const mixins = () => {
    data(){
      return{
        test: "混入测试",
      }
    },
    methods:{
      divClick () {
          console.log("divClickMixins");
      };
    },
};

vue文件中引入

import {mixins} from "./mixins"
export default {
    mixins: [ pageMixin ],
    data() {
      return {    	
      }
    }        
}

特性
组件使用mixins中的属性或者方法,当改变mixins的属性值或者是方法内部的一些逻辑操作时,只会在当前组件中起作用而并不会改变混入对象的属性值或者是方法,故其他组件引入mixins并使用其属性或者是方法时是不会受当前组件操作影响的(可类比继承,子继承了父的方法或属性,在子中对继承来的方法或属性做改变,是不会改变父的方法和属性的,更不会影响到其他的子继承父的属性和方法

tips: 请谨慎使用全局混入,因为它会影响每个单独创建的 Vue 实例 (包括第三方组件)。

vue3写法

mixins.ts

import {reactive} from "vue";

export const mixins = () => {
    const mixinsData=reactive({
        test: "混入测试",
    });
    const divClick = () => {
        console.log("divClickMixins");
    };
    return {
        mixinsData,
        divClick,
    };
};

在普通写法中使用混入

<template>
	<div>
		{{mixinsData.test}}
	</div>
	<div @click="divClick">点我</div>
</template>
<script>
import { mixins} from './mixins';

export default {
  data() {
    return {
      ...mixins(),
    };
  },
  methods: {
    divClick () {
      console.log('divClick')
    },
  },
};
</script>

setup写法中使用
mixins.ts

import {reactive} from "vue";

export const mixins = () => {
    const mixinsData=reactive({
        test: "混入测试",
    });
    const divClick = () => {
        console.log("divClickMixins");
    };
    //记得return出去哦
    return {
        mixinsData,
        divClick,
    };
};

vue组件中使用

<template>
	<div>
		{{data.name}}<br>
		{{data.code}}
		{{mixinsData.test}}
	</div>
	<div @click="divClick">点我</div>
</template>

<script setup lang="ts">
	import { ref, onMounted, reactive } from 'vue'
	import {mixins} from './mixins'
	let {mixinsData ,divClick} = mixins()
	const data = reactive({
		name : '111111',
		code : 0
	})
	
	divClick = () => {
		console.log('divClick')
	}
</script>

<style scoped lang="scss">

</style>

注意事项
在使用Vue 3的混入(mixins)功能时,有一些需要注意的地方:

1.冲突:如果混入(mixins)和组件本身的选项冲突,组件本身的选项将会优先生效。如果有冲突的选项,可以使用相同的名字创建组件本身的选项来覆盖混入(mixins)的选项。

2.生命周期钩子:Vue 3中的混入(mixins)中的生命周期钩子函数会在组件的生命周期之前调用。如果有多个混入(mixins),它们的生命周期钩子函数将按照混入(mixins)的声明顺序依次调用。

3.响应式属性:Vue 3中的混入(mixins)在组件内部使用的响应式属性需要在组件内部声明,否则它们将不会被响应式地追踪。

4.方法和计算属性:Vue 3中的混入(mixins)中的方法和计算属性会与组件本身的方法和计算属性合并。如果有冲突的方法或计算属性,组件本身的方法和计算属性将会覆盖混入(mixins)的方法和计算属性。

5.全局混入(mixins):Vue 3中已经移除了全局混入(mixins)的功能,不再推荐使用全局混入(mixins)。如果需要在多个组件中共享代码,可以考虑使用Composition API或自定义指令等其他方式。

6.在使用Vue 3的混入(mixins)时,需要注意组件选项冲突、生命周期钩子的调用顺序、响应式属性的声明和覆盖、方法和计算属性的合并,以及全局混入(mixins)的移除。

标签:混入,vue,const,mixins,divClick,组件,属性
From: https://www.cnblogs.com/LiZiheng/p/18235676

相关文章

  • Vue指令_v-if&v-show
    VUE指令—v-if及v-showv-if条件性的渲染某元素,判定为true时渲染,否则不渲染,结合v-if-else和v-else使用<body><divid="app">年龄<inputtype="text"v-model="age">经判定,为:<spanv-if="age<=35">年轻人(35及以下)......
  • Vue指令_v-bind&v-model
    VUE指令—v-bind及v-modelv-bind:为HTML标签绑定属性值,如设置href,css样式等。当vue对象中的数据模型发生变化时,标签的属性值会随之发生变化。v-model:在表单元素上创建双向数据绑定。vue对象的data属性中的数据变化,视图展示会一起变化;视图数据发生变化,vue对象的data属性......
  • Vue指令_v-on
    VUE指令—v-onv-on:用来给html标签绑定事件的。需要注意的是如下2点:v-on语法给标签的事件绑定的函数,必须是vue对象种声明的函数v-on语法绑定事件时,事件名相比较js中的事件名,没有on<body><divid="app"><!--v-on用于绑定事件--><inputtype="butto......
  • SpringBoot+Vue房屋租赁网站(前后端分离)
    技术栈JavaSpringBootMavenMySQLVueElement-UIShiroMybatis-Plus系统角色用户管理员房东系统功能截图......
  • 如何在Ant-Design-Vue中实现动态表头并填充数据
    在现代前端开发中,基于Vue.js的AntDesignVue已经成为许多开发者构建高质量用户界面的首选工具之一。它提供了一整套丰富的UI组件,其中的Table组件广泛应用于数据展示和操作。本文将深入探讨如何在AntDesignVue中实现动态表头并填充数据,以满足复杂多变的业务需求。一、引言......
  • 075:vue+cesium 导出场景图片
    作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第075个示例文章目录一......
  • Vue3主题切换
    又是一个曾经研究失败的课题,嘻嘻,今天必拿下~网上有很多主题切换的案例,但是别人的终究是别人的,研究透彻你才能灵活运用。这边用的V3adminvite项目的主题切换。这边cv了相关组件后报错在这个函数时发生了错误,为了提升效率,我直接将该函数的定义调到调用layouts中,报错消失......
  • vue2 路由基础 -- 基础使用
    @[TOC](vue2路由(一)–基础使用)vue使用vue-router插件处理路由,路由是开发单页应用必须掌握的知识。什么是vue-router?(1)vue-router是Vue官方提供前端路由插件,借助它我们实现可以基于路由和组件的单页面应用。(2)它与传统的页面区别在于:传统的页面应用采用的是后......
  • Sz-Admin | SpringBoot3 JDK21 Vue3开源后台RBAC管理系统 | 2024年好用的开源RBAC管理
    简介接触了很多优秀的开源和闭源项目,在使用过程中也发现一些问题,不甘满足的我遂产生了想法:于是利用休息时间编写了一套后台管理系统,它灵活、简洁、高效,拥抱最新的技术,因此Sz-Admin便诞生了,也意为升职Admin,升职加薪节节高。SzAdmin,一个基于SpringBoot3、Vue3和El......
  • vue框架页面外链进来加"/"拼接参数的使用及获取;PC及手机端的判断;
     一开始没有看懂,后来知道了 他的意思 就是在pages目录下的页面,如果需要通过比如'pages/qr/56'这种斜杠链接进入的话 就需要吧detail.vue页面变成目录结构,页面名称改为'_'+参数名;如下图 然后在_code页面可以通过如下方式获取code值进行操作:mounted(){constc......