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

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

往期文章

个人主页

相关推荐
非ban必选1 分钟前
netty-scoket.io路径配置
java·服务器·前端
じòぴé南冸じょうげん36 分钟前
小程序的project.private.config.json是无依赖文件,那可以删除吗?
前端·小程序·json
会豪1 小时前
Electron主进程渲染进程如何优雅的进行通信
前端
jianghaha20111 小时前
前端 Word 模板参入特定数据 并且下载
前端·word
跟橙姐学代码1 小时前
轻松搞定 Python 模块与包导入:新手也能秒懂的入门指南
前端·python·ipython
aiwery1 小时前
大模型场景下的推送技术选型:轮询 vs WebSocket vs SSE
前端·agent
会豪1 小时前
前端插件-不固定高度的DIV如何增加transition
前端
却尘1 小时前
Server Actions 深度剖析(2):缓存管理与重新验证,如何用一行代码干掉整个客户端状态层
前端·客户端·next.js
小菜全1 小时前
Vue 3 + TypeScript 事件触发与数据绑定方法
前端·javascript·vue.js
Hilaku1 小时前
面试官开始问我AI了,前端的危机真的来了吗?
前端·javascript·面试