Vue-mixins

本文介绍了Vue.js中混合(mixin)的使用,包括全局混合和局部混合的实现。混合允许开发者将组件共有的数据、方法抽取到单独的文件,提高代码复用性。在组件中,当组件数据与混合数据冲突时,组件数据优先。通过示例展示了`Student`和`School`组件如何引用并覆盖混合中的数据和方法。
摘要由CSDN通过智能技术生成

简单介绍

  • 可以把多个组件共有的数据,方法,提取成一个混合文件
  • data中数据自己和混合文件都有时,以自己的数据为主
  • 生命周期还有方法这些都是独立的

全局混合

// 这样引入所有的页面,组件都会使用这个混合
import mixin from './components/mixin/mixin'

Vue.mixin(mixin)

局部混合

// 常用引用方式
// mixin.js

export default {
    data() {
        return {
            mixData: '这是mixin中数据',
            x: 100,
        }
    },
    created () {
      console.log(this.y)
    },
    methods: {
        handleClick() {
            console.log(this.name)
        }
    },
    computed: {
        showNumber() {
            return this.x + this.y
        }
    }
}


// 两个需要引用混合的组件

// Student.vue
<template>
    <div>
      <h1>{{ msg }}</h1>
      <div @click="handleClick">姓名:{{name}}</div>
      <div>年龄:{{age}}</div>
      <div>数字:{{showNumber}}</div>
    </div>
</template>
<script>

import mixin from './mixin/mixin'

export default {
  name: 'Student',
  data () {
    return {
      msg: 'Welcome',
      y: 100
    }
  },
  mixins: [mixin],
  props: {
    name: {
      type: String,
      requried: true
    },
    age: {
      type: Number,
      default: 18
    }
  },
  created () {
    console.log(this.mixData)
  }
}
</script>


// School.vue
<template>
    <div>
      <h1>{{ msg }}</h1>
      <div @click="handleClick">姓名:{{name}}</div>
      <div>地址:{{address}}</div>
      <div>数字:{{showNumber}}</div>
    </div>
</template>
<script>

import mixin from './mixin/mixin'

export default {
  name: 'Student',
  data () {
    return {
      msg: 'Welcome',
      y: 200
    }
  },
  mixins: [mixin],
  props: {
    name: {
      type: String,
      requried: true
    },
    address: {
      type: String,
      requried: true
    }
  },
  created () {
    console.log(this.mixData)
  }
}
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值