将 Getter 传递给 Vuex 操作 returns null
Passing Getter to Vuex Action returns null
我正在尝试将 getter 传递给我的异步操作,它的控制台日志很好,但是调用 apollo 突变的 await 一直将其视为空值,而它只是打印了一个真实值到控制台...
我还使用 vuex-persisted-state
来保持商店数据的有效性。因此,在执行操作时 cartId 状态不为空...因此控制台正确记录 cartId 值的原因。
状态:
cartId: null, //initially null, is set with mounted in another component
getters:
getCartId(state) {
return state.cartId
},
操作:
async getCartItems({ commit, getters }) {
let getCartId = getters.getCartId
console.log(getCartId) // returns: Z2lkOi8vc2hvcGlmeS9DYXJ0LzBhMDIxNDQ2ODQ0ZDU1MGRhZmZmMWJjZTIzNTBhNDY4
const { data } = await this.app.apolloProvider.defaultClient.query({
query: getCart,
variables() {
return {
cartId: getCartId
}
},
skip() {
return !getCartId
}
})
},
控制台错误:
Uncaught (in promise) Error: GraphQL error: Variable $cartId of type ID! was provided invalid value
GraphQL 响应:Expected value to not be null
编辑:
问题似乎在于变量如何传递给我的查询
已通过使 variables
不是我等待中的函数来修复...
async getCartItems({ commit, getters }) {
const getCartId = await getters.getCartId
const { data } = await this.app.apolloProvider.defaultClient.query({
query: getCart,
variables: {
cartId: getCartId
},
skip() {
return !getCartId
}
})
if (data.cart) {
commit('updateCartObj', data.cart)
} else {
console.log('getCartItems Error' + data)
}
},
我正在尝试将 getter 传递给我的异步操作,它的控制台日志很好,但是调用 apollo 突变的 await 一直将其视为空值,而它只是打印了一个真实值到控制台...
我还使用 vuex-persisted-state
来保持商店数据的有效性。因此,在执行操作时 cartId 状态不为空...因此控制台正确记录 cartId 值的原因。
状态:
cartId: null, //initially null, is set with mounted in another component
getters:
getCartId(state) {
return state.cartId
},
操作:
async getCartItems({ commit, getters }) {
let getCartId = getters.getCartId
console.log(getCartId) // returns: Z2lkOi8vc2hvcGlmeS9DYXJ0LzBhMDIxNDQ2ODQ0ZDU1MGRhZmZmMWJjZTIzNTBhNDY4
const { data } = await this.app.apolloProvider.defaultClient.query({
query: getCart,
variables() {
return {
cartId: getCartId
}
},
skip() {
return !getCartId
}
})
},
控制台错误:
Uncaught (in promise) Error: GraphQL error: Variable $cartId of type ID! was provided invalid value
GraphQL 响应:Expected value to not be null
编辑: 问题似乎在于变量如何传递给我的查询
已通过使 variables
不是我等待中的函数来修复...
async getCartItems({ commit, getters }) {
const getCartId = await getters.getCartId
const { data } = await this.app.apolloProvider.defaultClient.query({
query: getCart,
variables: {
cartId: getCartId
},
skip() {
return !getCartId
}
})
if (data.cart) {
commit('updateCartObj', data.cart)
} else {
console.log('getCartItems Error' + data)
}
},