ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何在Vue 中管理 Mixins

2020-09-29 19:00:43  阅读:223  来源: 互联网

标签:Vue title Mixins js 如何 mixin 组件 data


当我们的vue项目功能越来越多时,如果有类似的组件,可能会发现自己一次又一次地复制和粘贴相同的数据、方法和 watch。当然,我们可以将所有这些单独的文件编写为一个单独的组件,并使用 prop 来尝试自定义它们,但是使用这么多 props 很容易造成混乱且难懂。为了避免这个问题,大多数人只是继续添加重复的代码,尽管自己感觉应该有更好的解决方案。

值得庆幸的是,vue 引入mixin来解决这类的总是,mixin是在不同组件之间共享可重用代码的最简单方法之一。Mixin 对象可以使用任何组件选项如 data、mounted、created、update等,当组件使用 Mixin 时,Mixin 对象中的所有信息都将混合到组件中。然后,组件将有权访问mixin中的所有选项,就像在组件本身中声明的那样。接着,我们通过示例来帮助加深一下映像:

// mixin.js file
export default {
   data () {
      msg: ‘Hello World’
   },
   created: function () {
      console.log('这里由 mixin 中 create 方法打印!')
   },
   methods: {
      displayMessage: function () {
         console.log(‘这里由 mixin 方法里打印!’)
      }
   }
}

// -----------------------------------------------------------
// main.js file
import mixin from ‘./mixin.js’
new Vue({
   mixins: [mixin],
   created: function () {
      console.log(this.$data)
      this.displayMessage()
   }
})
// => "这里由 mixin 中 create 方法打印!"
// => {msg: ‘Hello World’}
// => "这里由 mixin 方法里打印!"

正如我们所看到的,在使用mixin之后,该组件包含mixin中的所有数据,并且可以通过使用this来访问mxin中的数据和方法。我们还可以使用变量而不是单独的文件来定义mixin。 坦白地说,这是我们需要了解的大多数关于mixin的知识,但是我认为了解某些用例和特殊情况很有用。

广州包装设计公司http://www.maiqicn.com 电脑刺绣绣花厂 ttp://www.szhdn.com

如果发生命名冲突该怎么办?

当mixin中的数据、方法或任何组件选项与组件中的选项具有相同的名称时,可能会发生组件与其mixin之间的命名冲突。如果发生这种情况,则组件本身的属性将优先。例如,如果在组件和mixin中都有一个title数据变量。title将返回组件中定义的值,如下所示:

// mixin.js file
export default {
   data () {
      title: ‘Mixin’
   }
}
// -----------------------------------------------------------

// main.js file
import mixin from ‘./mixin.js’
export default {
   mixins: [mixin],
   data () {
      title: ‘Component’
   },
   created: function () {
      console.log(this.title)
   }
}
// => "Component"

 

总结

一般来说,对于Vue 的 mixin,我们还有很多要了解,,但是上面这些知识在开发中一般足够用了。如果你想了解更高级的主题,比如Vue中的全局mixin和自定义合并设置,可以在 Vue文档中找到这些信息。

标签:Vue,title,Mixins,js,如何,mixin,组件,data
来源: https://www.cnblogs.com/Qooo/p/13751287.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有