能否插值gql-tag查询实现基于参数动态生成GraphQL mutation语句
结论
你给出的写法可以实现预期的动态插值生成gql查询的需求。
实现原理
JavaScript 模板字符串的插值逻辑会在标签函数(此处为gql)执行前完成计算:
- 当传入的
newVersion为true时,两处三元表达式会分别返回$format: Boolean和format: $format,拼接后得到带format参数的mutation语句 - 当传入的
newVersion为false时,两处三元表达式返回空字符串,拼接后得到不带format参数的mutation语句
最终返回的结果完全匹配你需要的两种查询语句。
使用注意事项
- 调用该mutation时传参需要和生成的查询匹配:
newVersion为false时不要传递format变量,否则Apollo Client会抛出「变量未在查询中定义」的错误 - 这两种动态生成的查询会被Apollo Client识别为两个完全独立的查询,缓存会分开存储,不会互相影响
内容的提问来源于stack exchange,提问作者voip
相关产品推荐
相关产品推荐

