You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Vue的setup函数中访问$vuetify实例?

在Vue 3的setup函数和组合式函数中访问$vuetify及全局对象

setup函数中访问$vuetify

在Vue 3的setup函数里不能直接像Options API那样使用$vuetify,因为setup执行时组件实例还未完全初始化。你可以通过两种方式获取:

方式1:使用Vuetify官方提供的useVuetify(推荐)

这是Vuetify 3专为组合式API设计的方式,直接调用即可拿到Vuetify实例:

import { useVuetify } from 'vuetify'

export default {
  setup() {
    const vuetify = useVuetify()
    const isDesktop = vuetify.breakpoints.mdAndUp
    return { isDesktop }
  }
}

方式2:通过getCurrentInstance获取全局属性

如果是自定义全局对象,或者需要兼容特殊场景,可以用Vue的getCurrentInstance获取应用上下文里的全局属性,但这种方式更适合库开发者,应用代码优先用上面的方法:

import { getCurrentInstance } from 'vue'

export default {
  setup() {
    const instance = getCurrentInstance()
    const vuetify = instance.appContext.config.globalProperties.$vuetify
    const isDesktop = vuetify.breakpoints.mdAndUp
    return { isDesktop }
  }
}

组合式函数(Composables)中访问$vuetify

组合式函数可以直接调用useVuetify,和组件的setup逻辑一致,非常方便复用:

比如创建一个复用的断点判断组合式函数:

// composables/useBreakpoint.js
import { useVuetify } from 'vuetify'

export function useBreakpoint() {
  const vuetify = useVuetify()
  return {
    isDesktop: vuetify.breakpoints.mdAndUp,
    isMobile: vuetify.breakpoints.smOnly
  }
}

然后在组件中使用:

import { useBreakpoint } from '@/composables/useBreakpoint'

export default {
  setup() {
    const { isDesktop } = useBreakpoint()
    return { isDesktop }
  }
}

总结

  • setup函数:优先用useVuetify获取$vuetify,自定义全局对象可通过getCurrentInstance访问
  • 组合式函数:直接调用useVuetify即可,和组件内的使用方式完全一致

内容的提问来源于stack exchange,提问作者Laurence B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:20:37