mixin 混入的使用与理解

代码:

 首页先引入A 和 B 组件

<template>
  <div>
    <DomeA></DomeA>
    <hr />
    <DomeB></DomeB>

    <hr />
    <button @click="commonMethod()">commonMethod</button>
  </div>
</template>

<script>
import DomeA from "@/views/A-assembly.vue";
import DomeB from "@/views/B-assembly.vue";
// 引入 mixin 公共组件
import mixin from "@/components/11/mixin.js";

export default {
  // 混入
  mixins: [mixin],
  data() {
    return {};
  },
  // 注册组件
  components: { DomeA, DomeB },
  // 这里是注册了一个与公共组件中事件相同的名字
  // 如果当当前文件中要是有与公共组件事件相同的事件
  // 则以当前页面文件中的事件优先使用
  // A 和 B 组件则还是以公共组件 mixin 事件为准
  methods: {
    commonMethod() {
      console.log("公共数据");
    },
  },
};
</script>

<style>
</style><template>
  <div>
    <DomeA></DomeA>
    <hr />
    <DomeB></DomeB>
  </div>
</template>

<script>
import DomeA from "@/views/A-assembly.vue";
import DomeB from "@/views/B-assembly.vue";

export default {
  data() {
    return {};
  },
  components: { DomeA, DomeB },
};
</script>

 A组件内容

<template>
  <div>
    <p>{{ aData }}</p>
    <p>{{ commonData }}</p>
    <button @click="aMethod()">aMethod</button>
    <!-- 调用公共组件中的事件 -->
    <button @click="commonMethod()">commonMethod</button>
  </div>
</template>

<script>
// 引入公共组件文件
import mixin from "@/components/11/mixin.js";

export default {
  // 混入
  mixins: [mixin],
  data() {
    return {
      // 当前文件独有数据
      aData: "A组件数据",
    };
  },
  methods: {
    // 当前文件独有的事件
    aMethod() {
      console.log("组件A的方法");
    },
  },
  // 当前文件独有
  mounted() {
    console.log("组件a mounted");
  },
};
</script>
<style>
</style>

B组件中的内容

<template>
  <div>
    <div>
      <p>{{ bData }}</p>
      <p>{{ commonData }}</p>
      <button @click="bMethod()">aMethod</button>
      <!-- 调用公共组件中事件 如过有参数则在此传参即可 -->
      <button @click="commonMethod(bData)">commonMethod</button>
    </div>
  </div>
</template>

<script>
import mixin from "@/components/11/mixin.js";

export default {
  mixins: [mixin],
  data() {
    return {
      bData: "B组件数据",
    };
  },
  methods: {
    bMethod() {
      console.log("组件B的方法");
    },
  },
  mounted() {
    console.log("组件b mounted");
  },
};
</script>

<style>
</style>

公共组件内容

export default {
  data() {
    return {
      commonData: "公共数据",
    }
  },
  methods: {
    commonMethod(a) {
      console.log("公共的方法", a);
    },
  },
  mounted() {
    console.log("公共输出");
  }
}

mixin 混入的优势

  1、后期容易优化和维护

  2、可扩展性高

  3、代码去重 相同的东西可以直接调用

 

posted @ 2022-11-18 14:09  生活在北极的企鹅  阅读(49)  评论(0编辑  收藏  举报