Vue混入使用和選項合並詳解

1、在組件中使用

混入 (mixin) 提供瞭一種非常靈活的方式,來分發 Vue 組件中的可復用功能。一個混入對象可以包含任意組件選項。當組件使用混入對象時,所有混入對象的選項將被“混合”進入該組件本身的選項。

<template>
  <div class="event_style">
    <h2>基礎</h2>
    <div class="inner_children">
      <span>{{ message }}</span>
    </div>
  </div>
</template>
<script>
var myMixin = {
  data() {
    return {
      message: "",
    };
  },
  created: function () {
    console.log("created:add mixin");
    this.message = "created:add mixin";
    this.hello();
  },
  methods: {
    hello: function () {
      console.log("hello from mixin!");
    },
  },
};
// 定義一個使用混入對象的組件
export default {
  name: "mixin-basic",
  mixins: [myMixin],
};
</script>

2、選項合並

當組件和混入對象含有同名選項時,這些選項將以恰當的方式進行“合並”。

比如,數據對象在內部會進行遞歸合並,並在發生沖突時以組件數據優先。

<template>
  <div class="event_style">
    <h2>選項合並</h2>
    <div class="inner_children">
      <span>{{ message }}</span>
      <span>{{ message1 }}</span>
    </div>
  </div>
</template>
<script>
var myMixin = {
  data() {
    return {
      message: "mixin:mixin",
      message1: "mixin:mixin-1",
    };
  },
  created: function () {
    this.hello();
  },
  methods: {
    hello: function () {
      console.log("mixin:hello from mixin!");
    },
  },
};
// 定義一個使用混入對象的組件
export default {
  name: "mixin-merge",
  mixins: [myMixin],
  data() {
    return {
      message: "組件:hello",
    };
  },
  created: function () {
    this.hello();
  },
  methods: {
    hello: function () {
      console.log("組件:hello world!");
    },
  },
};
</script>
<style scoped>
.event_style {
  padding-left: 50px;
  padding-right: 50px;
}
.inner_children {
  display: flex;
  flex-direction: column;
  height: 150px;
  border: 1px solid #333;
  padding: 6px;
}
.inner_children span {
  font-size: 20px;
}
</style>

頁面呈現的效果

由上圖可以看出,混入的數據和方法和組件定義的有沖突時,以組件的優先,當組價中未定義時,才會進行合並,顯示混入定義的效果

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: