传入Vuex Action的getter打印正常但Apollo查询识别cartId为null如何解决
问题根因
你混淆了Vue Apollo组件配置项和原始Apollo Client查询API的用法,两个错误点如下:
apolloClient.query()原始API的variables参数只接收普通对象,不支持传入函数,你写的函数不会被Apollo自动执行,导致无法正确读取到cartId值skip是Vue Apollo组件级别的配置属性,不属于原始query方法的有效参数,写在这里完全不生效,不会帮你在cartId为空时跳过请求
解决方案
修改Vuex action的查询逻辑,直接传变量对象,前置判断cartId是否存在再发起请求:
async getCartItems({ commit, getters }) { const cartId = getters.getCartId console.log(cartId) // 前置校验代替无效的skip配置 if (!cartId) return const { data } = await this.app.apolloProvider.defaultClient.query({ query: getCart, // 直接传变量对象,不要包裹为函数 variables: { cartId: cartId } }) // 后续业务逻辑处理 }
可选排查验证
如果修改后仍有问题,可以打开浏览器控制台网络标签,查看对应GraphQL请求的Payload,确认variables下的cartId是否正确传入有效值。
内容的提问来源于stack exchange,提问作者joshwcorbett
相关产品推荐
相关产品推荐

