前置

使用

mixins/query.js文件

1
2
3
4
5
6
7
export default {
methods: {
sayHello() {
alert("你好,我说hello");
}
}
};

App.vue(这里简单演示就直接在App.vue使用混入了)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
import HelloWorldVue from "./components/HelloWorld.vue";
import query from "./mixins/query.js";//引入混入
import { getCurrentInstance, onMounted } from "vue";
export default {
name: "App",
components: {
HelloWorld: HelloWorldVue,
},
mixins: [query],//使用混入
setup() {
const { proxy } = getCurrentInstance();
onMounted(() => {
proxy.sayHello();
});
},
};
</script>

效果

需要注意的是使用时机

  • 使用混入,最好是在onMounted之后,而不要直接在setup里面去使用(但是回调函数情况去使用除外)
    • 如果在setup当中直接使用,会输出undefined,而在setup函数的回调当中却不会
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<template>
<img alt="Vue logo" src="./assets/logo.png" />
<HelloWorld msg="Welcome to Your Vue.js App" />
<button @click="onClick">我我我</button>
</template>
<script>
import HelloWorld from "./components/HelloWorld.vue";
import query from "./mixins/query"; //引入混入
import { getCurrentInstance } from "vue";
export default {
name: "App",
components: {
HelloWorld,
},
mixins: [query],
setup() {
const { proxy } = getCurrentInstance();
console.log(proxy.sayHello);//输出 'undefined'
const onClick = () => {
console.log('组件内方法调用mixin使用')
proxy.sayHello();//调用方法
}
return {
onClick,
}
},
};
</script>

参考文章

https://www.pudn.com/news/6285bc152927237e3ff15257.html