【发布时间】:2021-12-16 00:57:46
【问题描述】:
我基本上在每个组件中都需要vuex store,并想知道是否有办法省略:
import {useStore} from "vuex";
const store = useStore()
从所有组件中自动导入它,这样我就可以像这样使用它:
store.state.image = "..."
现在我已经在一个单独的 store.js 文件中导入了store:
import {createStore} from "vuex";
const store = createStore({
state() {
return {
image: sessionStorage.image || ""
}
}
})
export default store
并在app.js注册:
require('./bootstrap');
import {createApp} from 'vue';
import app from "../vue/app";
import store from "./store";
createApp(app)
.use(store)
.mount("#app");
我试过了:
createApp(app)
.component('store', store)
.mount("#app");
但它说type any 的store object 不能注册为component。
【问题讨论】:
-
这是一个错误,
component('store', store)。您不能将其用作组件,因为它不是组件。可以直接导入store。 -
@EstusFlask 是的,但我正在寻找一种方法让它在没有
import的情况下可用@ -
不会有什么好办法。依赖项应该在现代 JS 中显式导入。您可以做的事情是不要写
useStore部分并直接导入store。这不是问题,因为IDE 可以处理自动导入并且使用store不需要键入import。 -
顺便说一句 ctx.root.$store 可能可用,但不鼓励使用它,我相信它是无类型的,以防你使用 TS。
标签: vue.js vuex vuejs3 vue-composition-api