我试图将getter传递给我的异步操作,它控制台日志很好,但是调用阿波罗突变的await一直将其视为空值,而它只是将实际值打印到控制台…我还使用vuex-persisted-state
来保持存储数据存活。所以当动作执行时,cartId状态不是空的…这就是为什么控制台正确记录cartId值的原因。
状态:
cartId: null, //initially null, is set with mounted in another component
getter:
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 Response: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)
}
},