【发布时间】:2021-10-31 03:28:32
【问题描述】:
我一直试图让我的操作来设置数据,以便我可以从 getter 中提取它,但由于某种原因它似乎不起作用。来自 getter 的数据始终为空白。我的参数有效负载与我的 switch 语句中的大小写匹配,并与我的初始状态中的对象匹配。我不断收到Cannot set properties of undefined (setting 'GOOGLE_DRIVE') 错误。我做错了什么?
//===============================================================================
// Initial State
//===============================================================================
const initialState = {
users: {
GOOGLE_DRIVE: [],
},
}
const state = { ...initialState }
//===============================================================================
// Actions
//===============================================================================
const actions = {
//-------------------------------------------------------------------
// Login user
//-------------------------------------------------------------------
async login(state, payload) {
console.log('login vue')
try {
switch (payload) {
case 'GOOGLE_DRIVE': {
console.log('payload', payload)
const GoogleUser = await googleAuth.signIn()
const user = {
isSignedIn: GoogleUser.isSignedIn(),
name: GoogleUser.getBasicProfile().getName(),
image: GoogleUser.getBasicProfile().getImageUrl(),
email: GoogleUser.getBasicProfile().getEmail(),
accessToken: GoogleUser.getAuthResponse().access_token,
meta: GoogleUser.getAuthResponse(),
isActive: false
}
console.log('user', user)
//state.users[payload] = user
//state.commit('users', { GOOGLE_DRIVE: user })
console.log('user', state)
break;
}
default:
throw Error(`invalid drive name, ${payload}`);
}
} catch (err) {
console.error(`[login]: `, err);
}
},
}
//===============================================================================
// Mutations
//===============================================================================
const mutations = {
//-------------------------------------------------------------------
// Reset State
//-------------------------------------------------------------------
[RESET_STATE]() {
Object.keys(initialState).forEach(key => { state[key] = initialState[key] })
}
}
//===============================================================================
// Getters
//===============================================================================
const getters = {
users(state, payload, drive) {
console.log('opayload', payload)
console.log('drive', drive)
console.log('get state', state)
state.users = { }
},
}
【问题讨论】:
-
为什么要在 getter 中添加
state.users = { }行? -
在内部操作中也应该是
commit('users', { GOOGLE_DRIVE: user })而不是state.commit('users', { GOOGLE_DRIVE: user }) -
它是空白的,因为它还没有设置。你可以看到我在 getter 上为数据做控制台。