为什么在 vue 3 组合 api 中使用 useStore() ?

Spe*_*ord 5 javascript vue.js vuex vuejs3 vue-composition-api

useStore()您能解释一下在 vue 3 组件(composition-api)中使用函数的原因是什么吗?

我很困惑,因为商店的直接导入也有效,例如:

<script setup>
import { store } from '@/store';

const foo = computed(() => store.getters['foo']); // works!
</script>
Run Code Online (Sandbox Code Playgroud)

但很多时候我看到人们正在使用useStore()

<script setup>
import { useStore } from 'vuex';

const store = useStore();

const foo = computed(() => store.getters['foo']); // also works well
</script>
Run Code Online (Sandbox Code Playgroud)

为什么?到目前为止感觉只是额外的一行代码。我想我错过了一些东西。

谢谢


重要更新:我了解到,useStore()如果您正在进行单元测试并想要模拟商店,则需要这样做。

小智 2

根据文档,这一切都是关于组合 API 中最新的存储实例:

我们讨论如何在 Vue 2 和 Vuex 3 项目中检索商店。也许你已经有了答案,很简单,用this.$store就可以了。但是,我们知道 Composition API,在 setup() 内部,这不会是对当前活动实例的引用,因为 setup() 在解决其他组件选项之前被调用。

文档