我正在尝试将https://nuxtjs.org/guide/vuex-store之后的按钮名称列表从vuex存储传递到菜单组件中
我的/store/store.js:
export const state = () => ({
'toolbarActions' : [ 'My project', 'Home', 'About', 'Contact' ]
})
我的菜单组件:
<template>
<v-toolbar color="indigo" dark>
<v-toolbar-side-icon></v-toolbar-side-icon>
<v-toolbar-title class="white--text">Title</v-toolbar-title>
<v-spacer></v-spacer>
<v-toolbar-items class="hidden-sm-and-down">
<v-btn flat v-for="action in toolbarActions" :key="action">{{action}}</v-btn>
<!-- <v-btn flat v-for="action in toolbarActions">{{action}}</v-btn> -->
<!-- <v-btn flat>Link One</v-btn>
<v-btn flat>Link Two</v-btn>
<v-btn flat>Link Three</v-btn> -->
</v-toolbar-items>
</v-toolbar>
</template>
<script>
// import toolbarActions from '~/store/store.js'
export default {
computed: {
toolbarActions() {
return this.$store.state.toolbarActions
// return [ 'My project', 'Home', 'About', 'Contact' ]
}
}
}
</script>
如果我取消评论:
// return [ 'My project', 'Home', 'About', 'Contact' ]
并评论:
return this.$store.state.toolbarActions
按钮名称将传递到组件中。但使用
return this.$store.state.toolbarActions
未注释,什么也没有传递。
如何访问此处的vuex存储以传递按钮名称?
编辑:我进行了更改,得到了:
ERROR [Vue warn]: Error in render: "TypeError: Cannot read property
'toolbarActions' of undefined"
11:52:20
found in
---> <Menu> at components/menu.vue
<Default> at layouts/default.vue
<Root>
» store\_toolbar.js
答案 0 :(得分:1)
我建议在其中使用名为toolbar
的模块,并在其中添加以下代码:
export const state = () => ({
'toolbarActions' : [ 'My project', 'Home', 'About', 'Contact' ]
})
文件夹结构应类似于:
.
.
> static
v store
|_toolbar.js
,您的计算属性应类似于:
computed: {
toolbarActions() {
return this.$store.state.toolbar.toolbarActions //look i added the name of the toolbar module
// ^___________
}
}
}
答案 1 :(得分:-1)
更好的选择可能是
import {mapGetters} from 'vuex';
并使用类似
computed:mapGetters({
toolbarActions:'toolbar/toolbarActions'
})