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

Vue3 <script setup>语法下Vuex getters无法正常使用问题咨询

核心结论

<script setup>和Vuex不存在兼容性问题,你的写法本身完全符合官方规范,问题完全出自Vetur插件的适配缺陷。


问题根本原因

  • Vetur是针对Vue2开发的老旧编辑器插件,已停止对Vue3新语法的维护更新,无法正确识别<script setup>中顶层变量自动暴露给模板的特性,因此会误报变量未使用,这不是代码本身的问题。
  • 你后续排查出的“实际运行正常”完全符合预期,<script setup>语法本身就会自动暴露所有顶层声明的变量、导入的内容给模板,不需要手动return。

官方推荐修复方案

  • 卸载Vetur,安装Vue - Official(原Volar)插件,这是Vue官方维护的编辑器支持工具,完美适配<script setup>所有特性,不会出现上述误报,也能提供更完整的Vue3代码提示、类型检查能力。
  • 如果因特殊原因必须保留Vetur,可在ESLint配置中添加<script setup>块的未使用变量豁免规则,或给对应变量添加// eslint-disable-next-line no-unused-vars注释临时屏蔽报错,但该方案治标不治本,不建议长期使用。

相关写法规范说明

你写的<script setup>中调用Vuex的用法就是官方推荐的标准写法,这里顺便修正你之前普通setup()写法中的语法错误:你之前把const store = useStore()写在了export default内部、setup函数外部,不符合语法要求,useStore必须在setup函数作用域内调用,正确的普通setup()写法如下:

<script>
import { useStore } from 'vuex'
import { computed } from 'vue'

export default {
  setup () {
    const store = useStore()
    const loginStatus = computed(() => store.getters.loginStatus)
    return { loginStatus }
  }
}
</script>

标准<script setup>写法和你提供的代码完全一致,没有问题:

<script setup>
import { useStore } from 'vuex'
import { computed } from 'vue'
const store = useStore()
const loginStatus = computed(() => store.getters.loginStatus)
</script>

内容的提问来源于stack exchange,提问作者anatolhiman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:30:06