我想从选项 API 切换到组合 API,并使用可组合项代替 mixin。到目前为止,我一直在使用具有计算属性的全局 mixin,如下所示:
// globalMixin.js
computed: {
myAlert() {
return this.$refs.myAlertDiv;
}
}
然后我在创建应用程序时使用了这个mixin:
// MyApp.js
const MyApp = {
mixins: [globalMixin]
...
}
myAlert 成为 MyApp 的计算属性,我可以使用它而无需直接在 MyApp 属性内声明。
现在我想使用可组合项实现相同的结果,假设我有一个导入可组合项的组件:
// App.vue
<script setup>
import { useGlobalComposable} from './globalComposable.js';
const globalComposable = useGlobalComposable();
onMounted(() => {
// should work without declaring myAlert inside App.vue
console.log(globalComposable.myAlert);
})
...
</script>
可以吗?如果是这样,我应该如何在可组合项中声明 myAlert 模板引用?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您的
useGlobalComposable函数应返回myAlert,如下所示:const useGlobalComposable = function() { const myAlertDiv = .... const myAlert = computed(() => { return myAlertDiv; }); return {myAlert} }然后您可以在设置块中声明 myAlert
const { myAlert } = useComposable(); return { myAlert }请注意,
mixin中的this.$refs不能直接与 Composition API 一起使用。如果您创建组件,则可以使用this访问组件属性和方法。这是一篇关于将
refs与 Composition API 结合使用。在
设置中使用可组合项的非常简单的工作示例: