我为身份验证用户和用户令牌设置了一些cookie。
此后,我将在每个nuxtServerInit
上检查Cookie中的相同数据并将其设置在商店中。
虽然我在某些页面中使用asyncaData
,但似乎asyncData
在nuxtServerInit
之前开始...
async asyncData (context) {
console.log(context.store.getters['auth/getToken'])
}
在此日志中,我得到null
或状态内的任何预设值:
export default () => ({
user: null,
token: null
})
我在模块中存储了auth module
和index.js, actions.js, mutations.js, state.js and getters.js
在行动中,我有:
export const nuxtServerInit = ({ commit, getters }, { req, res }) => {
commit('setToken', 'token')
console.log('WORKING...')
}
当我使用asyncData
方法刷新页面时,出现错误,提示getToken
getter返回null
而不是'token'
字符串。并且console.log
中的nuxtServerInit
不会触发。
在此GitHub page中,它说nuxtServerInit
应该首先触发,然后在asyncData
之后触发。
在我看来,这是行不通的。...
有什么想法吗?
答案 0 :(得分:0)
nuxtServerInit
是一项操作,需要包含在商店文件的操作导出中:
export const actions = {
nuxtServerInit = ({ commit, getters }, { req, res }) => {
commit('setToken', 'token')
console.log('WORKING...')
}
}
还请注意,它必须位于商店的根模块(index.js)中才能正常工作
答案 1 :(得分:0)
ViewController
操作只能在主模块中定义。
如果您正在使用Vuex商店的模块模式,则仅主
nuxtServerInit
中的模块将收到此操作。你需要 从那里链接您的模块动作。
https://nuxtjs.org/guide/vuex-store#the-nuxtserverinit-action
答案 2 :(得分:0)
尝试将nuxtServerInit设置为异步/等待功能。
export const async nuxtServerInit = ({ commit, getters }, { req, res }) => {
await commit('setToken', 'token')
console.log('WORKING...')
}