我尝试将Vuex添加到我的Nuxt.js项目中。我创建了一个自定义ligthbox,并共享所有页面,并将代码写入默认的布局页面。
在页面上,要隐藏或显示ligthbox,我需要更改状态值。这是所有进入“存储”文件夹的模块:
// state.js
export const state = () => ({
lightbox: false,
});
// getters.js
export const getters = {
getLightbox(state)
{
return state.lightbox
},
}
// actions.js
export const actions = {
showLightbox({commit})
{
commit('UPDATE_LIGHTBOX', true)
},
hideLightbox({commit})
{
commit('UPDATE_LIGHTBOX', false)
},
}
// mutations.js
export const mutations = {
UPDATE_LIGHTBOX(state,value)
{
state.lightbox = value
},
}
然后,当我尝试从方法中调用“ this。$ store.state.lightbox”时,出现500错误:
TypeError: Cannot read property 'getters' of undefined
即使我尝试使用这种方式,也会遇到相同的错误:
import { mapGetters } from 'vuex'
export default {
computed: {
...mapGetters(['getLightbox']),
lightboxState()
{
return this.getLightbox
},
}
mounted()
{
console.log( this.lightboxState )
}
}
稍后我尝试使用asyncData,但控制台会打印“ undefined”值:
export default {
asyncData({ store })
{
console.log('Store =',store);
}
}
那么,将Vuex与Nuxt.js一起使用的正确方法是什么?也许我需要在“ nuxt.config.js”中添加其他内容?
答案 0 :(得分:1)
如果您为state.js
,getters.js
,mutations.js
和actions.js
使用单独的文件,则它们应该只有一个默认导出。
所以不是
// getters.js
export const getters = ...
您应该使用
// getters.js
export default {
getLightbox: state => state.lightbox
}
这适用于您的store
目录中的所有文件。