vue混入(mixins)

混入(mixins)是一种分发vue组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。

当组件使用混入对象时,所以混入对象的选项将被混入该组件本身选项,当组件和混入对象含有同名选项时,这些选项将以恰当的方式混合

 

当组件和混入对象数据发生冲突时组件数据优先

如:

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" }
  }
})

 

同名钩子函数将混合为一个数组,都将被调用,混合对象的钩子将先调用,组件自身钩子后调用

var mixin = {
  created: function () {
    console.log('混入对象的钩子被调用')
  }
}

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

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

 

因为混入(mixins)是一种分发vue组件中可复用功能的非常灵活的方式。混入对象可以包含任意组件选项。

所以对于混入对象可以放在一个js文件中封装然后引入组件

如:在src/common/js/mixins.js是编写混合的

export const playlistMinin = {
  computed: {
  //代码
  },

  mounted() {
   //代码
  },
  methods: {
   //代码
  }
}


export const playerMixin= {
  computed: {
  //代码
  },

  mounted() {
   //代码
  },
  methods: {
   //代码
  }
}

 

在组件components/singer/singer.vue中使用上面的代码

<script type='text/ecmascript-6'>

import {playlistMinin,playerMixin} form '../../common/js/mixin';

export default{

  mixins:[playlistMinin,playerMixin],

}

</script>

 

posted @ 2018-06-05 11:36  雨筠  阅读(282)  评论(0编辑  收藏  举报