国瑞个人博客
首页 > Vue > 轻松理解vue.js中的mixins(混合)

轻松理解vue.js中的mixins(混合)

轻松理解vue.js中的mixins(混合)

 2018年12月14日 作者: 国瑞个人博客 600次浏览

什么是mixins?

官方解释:混入 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

官方说的总是些屁话

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 定义一个混入对象
var myMixin = {
  created: function () {
    this.hello()
  },
  methods: {
    hello: function () {
      console.log('hello from mixin!')
    }
  }
}

// 定义一个使用混入对象的组件
var Component = Vue.extend({
  mixins: [myMixin]
})

var component = new Component() // => "hello from mixin!"

看到没,这玩意儿自身还能有生命周期,并且有个核心东西methods

选项合并

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var mixin = {
  data: function () {
    return {
      message: 'hello',
      foo: 'abc'
    }
  }
}

new Vue({
  mixins: [mixin],
  data: function () {
    return {
      message: 'goodbye',
      bar: 'def'
    }
  },
  created: function () {
    console.log(this.$data)
    // => { message: "goodbye", foo: "abc", bar: "def" }
  }
})

这段代码说的意思就是如果你在mixin中定义了data,将mixin方法混合到一个组件中区使用,这时候在组件中你又重新定义了这个data,那么最终你使用的时候拿到的这个data是你当前页面拿到的data值,类似就近原则权重更高,如果你懂Object.assign这个玩意儿,那就很清楚了,一个道理

同名钩子函数将混合为一个数组,因此都将被调用。另外,混入对象的钩子将在组件自身钩子之前调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var mixin = {
  created: function () {
    console.log('混入对象的钩子被调用')
  }
}

new Vue({
  mixins: [mixin],
  created: function () {
    console.log('组件钩子被调用')
  }
})

// => "混入对象的钩子被调用"
// => "组件钩子被调用"

这段代码想说的无非就是mixin里面的钩子函数也就是生命周期会比你组件中定义的先执行

全局混入

也可以全局注册混入对象。注意使用! 一旦使用全局混入对象,将会影响到 所有 之后创建的 Vue 实例。使用恰当时,可以为自定义对象注入处理逻辑。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 为自定义的选项 'myOption' 注入一个处理器。
Vue.mixin({
  created: function () {
    var myOption = this.$options.myOption
    if (myOption) {
      console.log(myOption)
    }
  }
})

new Vue({
  myOption: 'hello!'
})
// => "hello!"

这玩意儿就是说如果你直接挂Vue的实例上,那这东西在整个项目都可以去直接耍,并且还能取影响你使用的第三框框架,前面我们都是定义个mixin,在需要的组件中区混入

总体来说mixin是个比较实用,而且很简单的东西,只是如果你没仔细去看去理解,觉得有点神秘,或者官方说的有点拗口,用一次就知道了,就是个代码方法重用

本文转载于:https://www.weipxiu.com/2428.html

百度已收录

点击快速分享:

以上就是国瑞前端个人博客带来的是《轻松理解vue.js中的mixins(混合)》,感谢您的观看!

如果没有特殊的说明,本文即为国瑞前端博客原创(www.huanggr.cn),欢迎读者转载并保留本站版权!https://www.huanggr.cn/1130.html

「专业前端博客,如果觉得我的文章对您有用,请帮助本站成长」

赞( 36 ) 打赏

谢谢你请我吃鸡腿*^_^*

支付宝
微信
36

谢谢你请我吃鸡腿*^_^*

支付宝
微信
标签:

上一篇:

下一篇:

相关文章:

共有 0 条评论

博客简介

国瑞个人博客: https://www.huanggr.cn/,我们关注Web前端开发技术,web前端开发,移动前端开发,前端资讯,同时分享前端资源和工具等,期待你的参与,了解更多..

博主独立研发主题:

本站唯一QQ群

加入国瑞个人博客QQ群

本群为学习探讨群,主要和前端相关,欢迎广大前端(抱有学习目的均可)爱好者加入!广告请勿添加!

升级版本

web前端开发博客,基于vue脚手架制作的前端博客正在制作中,尽情期待,目前示例的代码位于此处

最新版本(尽请期待)-web前端开发博客

精彩评论

本站主要提供服务

二年web前端开发博客,本站专注提供web资源下载,技术问题解答,经验分享,也提供新手的web技术指导,二年前端个人博客,期待你的加入!

站点统计

  • 文章总数: 269 篇
  • 草稿数目: 50 篇
  • 分类数目: 26 个
  • 页面总数: 16 个
  • 评论总数: 216 条
  • 链接总数: 10 个
  • 标签总数: 104 个
  • 建站时间: 803 天
  • 注册用户: 659 人
  • 访问总量: 8780696 次
  • 最近更新: 2019年7月15日
-->