我想从选项 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 模板引用?
您的
useGlobalComposable
函数应返回myAlert
,如下所示:然后您可以在设置块中声明 myAlert
请注意,
mixin
中的this.$refs
不能直接与 Composition API 一起使用。如果您创建组件,则可以使用this
访问组件属性和方法。这是一篇关于将
refs
与 Composition API 结合使用。在
设置
中使用可组合项的非常简单的工作示例: