首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue 3模板参考文献

Vue 3模板参考文献
EN

Stack Overflow用户
提问于 2022-11-04 18:12:12
回答 1查看 77关注 0票数 1

我希望从Options切换到Composition,并使用composables代替mixin。到目前为止,我一直在使用具有以下计算属性的全局混合:

代码语言:javascript
复制
// globalMixin.js

 computed: {
    myAlert() {
        return this.$refs.myAlertDiv;
    }
 }

然后,我在创建应用程序时使用了这个混合器:

代码语言:javascript
复制
// MyApp.js

const MyApp = {
   mixins: [globalMixin]
...
}

myAlert成为MyApp的计算属性,我可以使用它而不直接在MyApp属性中声明。

现在,我想要实现与可组合性相同的结果,假设我有一个导入可组合的组件:

代码语言:javascript
复制
// 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模板ref?

EN

回答 1

Stack Overflow用户

发布于 2022-11-07 11:02:40

useGlobalComposable函数应该返回myAlert,如下所示:

代码语言:javascript
复制
const useGlobalComposable = function() { 
  
   const myAlertDiv = ....

   const myAlert = computed(() => {
        return myAlertDiv;
    });

   return {myAlert}
  }

然后可以在安装块中声明myAlert。

代码语言:javascript
复制
 const { myAlert } = useComposable();   
 return { myAlert }

注意,来自this.$refsmixin不会直接与复合API一起工作。如果创建组件,则可以使用this访问组件属性和方法。

这里有一篇关于using refs with Composition API的好文章。

setup中使用可组合的非常简单的工作示例

代码语言:javascript
复制
 const { ref, reactive, createApp } = Vue;
 
 const useComposable = function() { 
  const test = ref(1);
  return { test }; 
 }
 
 const App = { 
   setup() {    
      const { test } = useComposable();   
      return { test }
   }
}
 
 const app = createApp(App)
 app.mount('#app')
代码语言:javascript
复制
<div id="app">
  <div>Test: {{ test }}</div>
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74321345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档