vue3学习笔记(Mixin混入)

简介: vue3学习笔记(Mixin混入)

Mixin


分发 Vue 组件中的可复用功能


  • 不同组件使用mixin,mixin里的数据是独立的,组件间不会受影响(A组件使用mixin中的num属性,B组件也是用num属性,A组件修改num的值不会影响B组件引入mixin的num值)
  • 数据对象在内部会进行递归合并,并在发生冲突时以组件数据优先。同名钩子函数将合并为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用。值为对象的选项,例如 methods、components 和 directives,将被合并为同一个对象。两个对象键名冲突时,取组件对象的键值对。
  • app.config.optionMergeStrategies:自定义选项合并策略,会影响混入数据和组件内数据显示的优先级。
  • 以下设置,则会使混入数据的优先级高于组件内数据的优先级(针对设置的propeety)
app.config.optionMergeStrategies[property] = (toVal, fromVal) => toVal || fromVal

setup写法

mixin.js

import {ref} from 'vue'
export default function(){
  let  num = ref(1);
  let fav = ref(false);
  let favBtn = ()=>{
    num.value += 1;
    fav.value = true;
    setTimeout(()=>{
      fav.value = false;
        },2000)
    }
    return {num,fav,favBtn}
}

A.vue

<template>
  <div>
    <h1>A组件</h1>
    {{ num }}
    <button @click='favBtn'>
      {{ fav ? '收藏中...' : '收藏' }}
    </button>
  </div>
</template>
<script setup>
import mixin from '../mixins/mixin.js'
let { num , fav , favBtn } = mixin();
</script>

选项式api写法(vue2写法)

mixin.js

export const fav = {
  data () {
    return {
      num:10
    }
  },
  methods:{
    favBtn( params ){
      this.num += params;
    }
  }
}

A.vue

<template>
  <div>
    <h1>A组件</h1>
    {{ num }}
    <button @click='favBtn(1)'>按钮</button>
  </div>
</templat>
<script type="text/javascript">
import { fav } from '../mixins/mixin.js'
export default{
  data () {
    return {
      str:'你好'
    }
  },
  mixins:[fav]
}
</script>
目录
相关文章
|
24天前
|
存储 JavaScript 前端开发
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
【10月更文挑战第21天】 vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
|
21天前
|
JavaScript 前端开发 开发者
Vue 3中的Proxy
【10月更文挑战第23天】Vue 3中的`Proxy`为响应式系统带来了更强大、更灵活的功能,解决了Vue 2中响应式系统的一些局限性,同时在性能方面也有一定的提升,为开发者提供了更好的开发体验和性能保障。
48 7
|
22天前
|
前端开发 数据库
芋道框架审批流如何实现(Cloud+Vue3)
芋道框架审批流如何实现(Cloud+Vue3)
41 3
|
21天前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
39 1
|
21天前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
42 1
|
24天前
|
前端开发 JavaScript
简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
|
24天前
Vue3 项目的 setup 函数
【10月更文挑战第23天】setup` 函数是 Vue3 中非常重要的一个概念,掌握它的使用方法对于开发高效、灵活的 Vue3 组件至关重要。通过不断的实践和探索,你将能够更好地利用 `setup` 函数来构建优秀的 Vue3 项目。
|
27天前
|
JavaScript API
vue3知识点:ref函数
vue3知识点:ref函数
32 2
|
27天前
|
API
vue3知识点:reactive函数
vue3知识点:reactive函数
27 1
|
27天前
|
JavaScript 前端开发 API
vue3知识点:Vue3.0中的响应式原理和 vue2.x的响应式
vue3知识点:Vue3.0中的响应式原理和 vue2.x的响应式
24 0
下一篇
无影云桌面