【发布时间】:2021-01-10 09:11:06
【问题描述】:
在 Vue 2 中,您可以在 created 挂钩中访问 this.$root。在 Vue 3 中,本来可以在 created 挂钩中的所有内容现在都在 setup() 中。
在setup() 中我们无法访问this,那么,我们如何访问根实例上的任何内容?
说,我在根实例上设置了一个属性:
const app = createApp(App).mount('#app');
app.$appName = 'Vue3';
我可以使用this.$root.$appName 从mounted() 访问this,如何在setup() 中执行此操作?
更新
如果我import它,我可以访问它:
import app from '@/main';
...
setup() {
console.log(app.$appName) // Vue3
但是,如果我必须对每个文件都这样做,这会很麻烦。
更新 2
另一种解决方法是在App.vue 中使用provide(),然后在任何其他组件中使用inject():
setup() {
provide('$appName', 'Vue3')
setup() {
inject('$appName') // Vue3
【问题讨论】:
-
你
console.log(this)看看发生了什么事吗? -
this是undefined在setup()内 -
好吧我猜你不能访问它然后
When setup is executed, the component instance has not been created yet -
根实例必须在组件之前存在
-
hmm.. 但你可以使用道具。也许您将根实例作为道具传递给孩子?
标签: javascript vue.js vue-component vuejs3 vue-composition-api