由于composition api的原因,我试图从vuetify 2.6迁移到2.7,但在尝试获取Vue实例的属性时遇到了很多错误,例如,我将Vue与vuetify一起使用,并且我有一个separed"助手";尝试获取$vuetify实例,但每次我获取undefined
时,即使我试图从应用程序中的setup((获取属性。由于我没有定义,当尝试从具有getCurrentInstance()
的实例获取vue-router
的$route属性时,也发生了同样的事情,当时我对路由器的唯一解决方案是使用vue-router/composables
的内部可组合来获取路由。
另一件同样发生的事情是getCurrentInstance()
有时返回null。
我的main.js看起来像:
import Vue from 'vue'
...
import App from './App.vue'
import router from './router'
import store from './store'
import vuetify from './plugins/vuetify'
...
Vue.config.productionTip = false
new Vue({
router,
store,
vuetify,
render: h => h(App),
}).$mount('#app')
/插件/vuetify.js
import Vue from 'vue'
import Vuetify from 'vuetify/lib/framework'
Vue.use(Vuetify)
export default new Vuetify({
preset
...
})
App.vue
<template>...</template>
<script>
import { getCurrentInstance } from 'vue'
export default{
setup(){
console.log( getCurrentInstance().proxy, getCurrentInstance().proxy.$vuetify )
// returns: {}, undefined
// sometimes returns null, undefined
}
}
</script>
版本:
"vue": "^2.7.11"
"@vue/cli-service": "~5.0.8"
"vuetify": "^2.6.11"
有人知道可能是什么吗?,谢谢
已编辑:无法在vue v2.7.12中复制。我试过vue v2.7.11,可以重现您的问题。v2.7.11中存在严重的回归,请升级您的vue。
这里是v2.7.12的一个最小示例。
https://stackblitz.com/edit/vitejs-vite-fjpdck
getCurrentInstance().proxy
返回VueComponent
,getCurrentInstance().proxy.$vuetify
成功获取vuetify实例。
顺便说一下,在setup
中获得$route
实例的推荐方法是
import { useRoute } from 'vue-router/composables' // need vue-router v3.6
export default{
setup(){
const route = useRoute()
}
}