vue混入mixins详解和生命周期影响

1. mixins混入介绍

mixins 选项接收一个混入对象的数组。一个混入对象可以包含任意的组件选项(vue里script的部分),这些选项将会被合并到最终的选项中,使用的是和 Vue.extend() 一样的选项合并逻辑。也就是说,如果你的混入包含一个 created 钩子,而创建组件本身也有一个,那么两个函数都会被调用。混入对象也可以包含data、created、mounted、methods、filters等等,它们将会被合并到组件自己的选项上。

2. 为什么使用mixins

可以理解为一个扩展包,引入之后,可以给组件扩展一些功能,比如组件的初始化,组件的销毁,组件的监听,组件的过滤等,可以减少组件的代码量,提高代码的复用率。相当于在引入后,父组件的各种属性方法都被扩充。

注意:minxins里面同名的方法和属性,会被父组件覆盖。

3. 局部混入用法

先定义一个minxins.js文件,里面导出一个包含vue option选项的对象,然后在需要的页面里面使用mixins选项引入即可。

  • minxins.js
javascript 复制代码
export const commonMixins = {
  data() {
    return {
      name: '张三'
    }
  },
  mounted() {
    this.name = '李四'
    this.consolelog()
  },
  methods: {
    consolelog() {
      console.log(this.name)
    }
  }
}
  • home.vue
javascript 复制代码
<template>
  <div class="home_box">
    <p>{{ this.name }}</p>
  </div>
</template>

<script>
import { commonMixins } from '@/utils/mixins.js'

export default {
  name: 'Home',
  mixins: [commonMixins],
  data() {
    return {
      keyword: '',
    }
  }
}
</script>

4. 全局混入用法

先先定义一个minxins.js文件,里面导出一个包含vue option选项的对象。然后在main.js中使用,其余页面就不用再引入了。

  • main.js
javascript 复制代码
import commonMixins from '文件路径/mixin';
Vue.mixin(commonMixins)

const app = new Vue({
  render: h => h(App),
  router,
  store
})

app.$mount('#app')

5. 生命周期顺序

混入之后,生命周期执行顺序如下:

javascript 复制代码
mixin的beforeCreate 
↓
父beforeCreate
↓
mixin的created
↓
父created
↓
mixin的beforeMount
↓
父beforeMount
↓
子beforeCreate
↓
子created
↓
子beforeMount
↓
子mounted
↓
mixin的mounted
↓
父mounted

如果看了觉得有帮助的,我是鹏多多,欢迎 点赞 关注 评论;

往期文章

个人主页

相关推荐
fanruitian12 分钟前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo15 分钟前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk19 分钟前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
摘星编程1 小时前
React Native + OpenHarmony:Timeline垂直时间轴
javascript·react native·react.js
2501_944525542 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
jin1233222 小时前
React Native鸿蒙跨平台完成剧本杀组队详情页面,可以复用桌游、团建、赛事等各类组队详情页开发
javascript·react native·react.js·ecmascript·harmonyos
李白你好2 小时前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端
经年未远3 小时前
vue3中实现耳机和扬声器切换方案
javascript·学习·vue
刘一说4 小时前
Vue 组件不必要的重新渲染问题解析:为什么子组件总在“无故”刷新?
前端·javascript·vue.js
可触的未来,发芽的智生4 小时前
狂想:为AGI代称造字ta,《第三类智慧存在,神的赐名》
javascript·人工智能·python·神经网络·程序人生