vuejs - 模板、商店、this.$store 未定义
vuejs - template, store, this.$store is undefined
我在 vuejs 组件中检索 vuex 存储时遇到问题。
我的架构非常简单。我的商店有两个模块。
main.js
new Vue({
el: '#app',
store,
router,
template: '<App/>',
components: {
App
},
Events.vue - 这里我在 syncfusion 组件中使用我的自定义组件 UserDropdown,但我认为这不相关。第一个注册 UserDropdown,第二个片段将在您单击单元格时调用 returns 我的自定义组件:
...
components: {
UserDropdown
},
...
editTemplate: function () {
return {template: UserDropdown}
},
...
UserDropdown.vue - 在这里我想使用商店,但结果是:"this.$store is undefined"。从 Events.vue 等其他组件访问商店工作正常。
computed: {
users: function () {
return this.$store.state.usersState.users;
}
store.js
import Vue from 'vue';
import Vuex from 'vuex';
import projectsState from './modules/projectsStore'
import usersState from './modules/usersStore'
import createLogger from 'vuex/dist/logger'
Vue.use(Vuex);
const debug = process.env.NODE_ENV !== 'production';
export const store = new Vuex.Store({
modules: {
projectsState,
usersState
},
strict: debug,
plugins: debug ? [createLogger()] : []
});
为什么那行不通?问题是否与 "template: UserDropdown" 有关?我认为每个组件都应该能够访问商店...
看起来,必须在 UserDropdown.vue 组件中再次导入商店。这对我来说没有任何意义,因为我在新的 Vue 实例中导入了商店,如上所示。
这里要添加的代码片段在UserDropdown.vue
...
import {store} from "../store/store";
...
export default {
store,
name: 'UserDropdown',
...
...mapGetters({users: 'usersState/AllUsers'})
...
我在 vuejs 组件中检索 vuex 存储时遇到问题。 我的架构非常简单。我的商店有两个模块。
main.js
new Vue({
el: '#app',
store,
router,
template: '<App/>',
components: {
App
},
Events.vue - 这里我在 syncfusion 组件中使用我的自定义组件 UserDropdown,但我认为这不相关。第一个注册 UserDropdown,第二个片段将在您单击单元格时调用 returns 我的自定义组件:
...
components: {
UserDropdown
},
...
editTemplate: function () {
return {template: UserDropdown}
},
...
UserDropdown.vue - 在这里我想使用商店,但结果是:"this.$store is undefined"。从 Events.vue 等其他组件访问商店工作正常。
computed: {
users: function () {
return this.$store.state.usersState.users;
}
store.js
import Vue from 'vue';
import Vuex from 'vuex';
import projectsState from './modules/projectsStore'
import usersState from './modules/usersStore'
import createLogger from 'vuex/dist/logger'
Vue.use(Vuex);
const debug = process.env.NODE_ENV !== 'production';
export const store = new Vuex.Store({
modules: {
projectsState,
usersState
},
strict: debug,
plugins: debug ? [createLogger()] : []
});
为什么那行不通?问题是否与 "template: UserDropdown" 有关?我认为每个组件都应该能够访问商店...
看起来,必须在 UserDropdown.vue 组件中再次导入商店。这对我来说没有任何意义,因为我在新的 Vue 实例中导入了商店,如上所示。 这里要添加的代码片段在UserDropdown.vue
...
import {store} from "../store/store";
...
export default {
store,
name: 'UserDropdown',
...
...mapGetters({users: 'usersState/AllUsers'})
...