【发布时间】:2018-08-13 22:33:18
【问题描述】:
我试图导出一个命名的 gql 查询以在另一个反应组件中使用,以便调用它来更新 apollo 缓存。如果我使用 PRODUCTS_QUERY,则该代码有效,因为我导出了 const PRODUCTS_QUERY。但是,为了更好的命名约定,我更愿意使用命名的 gql 变量“productsQuery”。但是,当我使用 'productsQuery' 代替 PRODUCTS_QUERY 时,它会引发错误。有人成功使用了命名变量吗?请指教。提前致谢
在 Home.js 中
export const PRODUCTS_QUERY = gql`
{
products {
id
price
pictureUrl
name
}
}
`;
export default graphql(PRODUCTS_QUERY, { name: "productsQuery" })(Home);
在 AddProduct.js 中
// import { PRODUCTS_QUERY } from "./Home";
import { productsQuery } from "./Home";
try {
let response = await this.props.mutate({
variables: {
name,
price,
picture
},
// - - - - - - - - THIS PART WORKS - - - - - - -
// update: (store, { data: { createProduct } }) => {
// const data = store.readQuery({ query: PRODUCTS_QUERY });
// data.products.push(createProduct);
// store.writeQuery({ query: PRODUCTS_QUERY, data });
// }
// - - - - - - - - THIS PART FAILS - - - - - - -
update: (store, { data: { createProduct } }) => {
const data = store.readQuery({ query: productsQuery });
data.products.push(createProduct);
store.writeQuery({ query: productsQuery, data });
}
});
console.log("RESPONSE", response);
} catch (err) {
console.log("ERROR", err);
}
this.props.navigation.navigate("Home");
};
我可以以允许我使用命名变量“productsQuery”而不是“PRODUCTS_QUERY”的方式导出任何方式,因为命名的目的是使命名约定标准化。提前致谢
【问题讨论】:
-
请发布错误信息。另外,这是有效的代码,还是无效的代码?
-
嗨。以上代码有效。但是,我更喜欢使用命名变量“productsQuery”而不是“PRODUCTS_QUERY”(在代码中可以看到)。知道如何在我的更新存储函数中为我的 gql 查询 n 突变使用命名变量吗?
-
如果您发布不起作用的代码和错误消息,将更容易找出问题所在。否则,我只能猜测。
-
嗨,Tal Z,我已经修改了源代码以突出显示工作代码和非工作代码。谢谢:)
标签: graphql graphql-js react-apollo