在 Vue 2 中,您可以访问钩子this.$root内部created。在 Vue 3 中,原本应该进入createdhook 的所有东西现在都进入了setup().
在setup()我们没有访问权限的情况下this,我们如何访问根实例上的任何内容?
比如说,我在根实例上设置了一个属性:
const app = createApp(App).mount('#app');
app.$appName = 'Vue3';
Run Code Online (Sandbox Code Playgroud)
我可以this从mounted()with访问this.$root.$appName,我怎样才能做到这一点setup()?
更新
如果我可以访问import它:
import app from '@/main';
...
setup() {
console.log(app.$appName) // Vue3
Run Code Online (Sandbox Code Playgroud)
但是,如果我必须为每个文件都这样做,这很麻烦。
更新 2
另一种解决方法是在provide()内部使用App.vue,然后inject()在任何其他组件中使用:
setup() {
provide('$appName', 'Vue3')
Run Code Online (Sandbox Code Playgroud)
setup() {
inject('$appName') // Vue3
Run Code Online (Sandbox Code Playgroud)