将Getter传递给Vuex Action返回null



我试图将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)
}
},

相关内容

  • 没有找到相关文章

最新更新