vue.js - Vuejs3 扩展另一个组件或方法
问题描述
我如何扩展另一个组件?
我的主要组件
主组件.vue
<template>
<div>
empty
</div>
</template>
<script>
export default {
methods: {
sendAlert(msg) {
alert(msg);
}
}
}
</script>
第二组分;
第二组件.vue
<template>
<div>
<button @click="MainComponent.methods.sendAlert('first try')"></button>
<!--OR-->
<button @click="sendAlert('second try')"></button>
</div>
</template>
<script>
import MainComponent from "./MainComponent.vue"
export default {
extends: { MainComponent },
methods: {
...MainComponent.methods
}
}
</script>
我无法访问方法。我该怎么做?
注意:(我不想要这个)
<template>
<div>
<button @click="sendAlert('second try')"></button>
</div>
</template>
<script>
import MainComponent from "./MainComponent.vue"
export default {
extends: { MainComponent },
methods: {
Message(msg) {
MainComponent.methods.sendAlert(msg);
}
}
}
</script>
所以我在一个组件中有一个或多个方法。如何在另一个组件中使用这些方法?
解决方案
如果您想使用相同的方法甚至相同的属性,您可以创建 mixins.js 文件
export const YouMixins = {
methods: {
sendAlert(msg) {
alert(msg);
}
}
}
然后在你的第二个组件中
<template>
<div>
<button @click="sendAlert('first try')"></button>
<!--OR-->
<button @click="sendAlert('second try')"></button>
</div>
</template>
<script>
import { YouMixins } from "./mixins.js"
export default {
mixins: [YouMixins],
}
</script>
请注意,您不仅可以传递方法,甚至可以传递计算、数据、生命周期等
推荐阅读
- python - Python socket.accept() 在第二次调用时不起作用
- r - R 正则表达式中的负前瞻问题
- reactjs - 使用翻译 react-i18next 和 react-moment
- r - 使用另一个函数重现 hist() 的 $count 方面
- kotlin - 如何仅使用元素上的特定序列来减少列表
- typescript - 如何使用 SPFx - 字段定制器对 SharePoint 列表字段值进行条件格式设置?
- python - 在 matplotlib 中将一个动画叠加到另一个动画上
- typescript - 基于字段的 TypeScript 通用推断
- python - 使用标准输出维护 C# 和 Python 之间的连接
- r - 比较 R 中不同长度的数据帧,并在不同的行中添加零