Javascript React Apollo客户端突变组件中的refetchQueries不工作?
我的Javascript React Apollo客户端突变组件中的refetchQueries不工作?,javascript,reactjs,graphql,apollo,react-apollo,Javascript,Reactjs,Graphql,Apollo,React Apollo,我的Home.js文件中有一个 Home.js 当在组件内调用switchSelectedProduct时,它运行refetchQueries,正如我看到的console.log(“refetchQueries”,product.id)语句,但我在Home.js文件的组件中没有看到更新的结果 在Main.js文件中运行refetchQueries时,如何告知Home.js中的组件获得通知 有什么建议吗?来自文档:refetchQueries:Array,因此您可能需要返回一个数组,而不仅仅是对象
Home.js文件中有一个
Home.js
当在
组件内调用switchSelectedProduct
时,它运行refetchQueries
,正如我看到的console.log(“refetchQueries”,product.id)代码>语句,但我在Home.js
文件的
组件中没有看到更新的结果
在Main.js
文件中运行refetchQueries
时,如何告知
Home.js中的
组件获得通知
有什么建议吗?来自文档:refetchQueries:Array
,因此您可能需要返回一个数组,而不仅仅是对象
<Mutation
key={v4()}
mutation={SWITCH_SELECTED_PRODUCT}
refetchQueries={() => {
console.log("refetchQueries", product.id)
return [{
query: GET_TODOS_BY_PRODUCT,
variables: { id: product.id }
}];
}}
>
{
console.log(“refetchquerys”,product.id)
返回[{
查询:按产品获取待办事项,
变量:{id:product.id}
}];
}}
>
我在一些帮助下解决了这个问题。refetchQueries
中显然存在一个bug,因为它不会更新来自另一个组件的数据。但是根本不需要refetchquerys
我用另一个Query
包装了我的Home
组件,如:
Home.js
您必须直接传递对象数组,而不是返回函数
<Mutation refetchQueries={[{query:YOUR_QUERY}>
...code
</Mutation>
…代码
Hey@alexhenkel,所以我用一些其他参数再次尝试了它,但我仍然看不到我的
组件被重新渲染。这是我的另一个问题。效果很好。谢谢另见其文件:
<Mutation
key={v4()}
mutation={SWITCH_SELECTED_PRODUCT}
refetchQueries={() => {
console.log("refetchQueries", product.id)
return [{
query: GET_TODOS_BY_PRODUCT,
variables: { id: product.id }
}];
}}
>
<Query
query={GET_ALL_PRODUCTS}
variables={{ id: state.get("user.id") }}
>
{({ data: { user } }) => {
const { id, name } = user.products ? user.products[0] : [];
return <Main id={id} name={name} />;
}}
</Query>
<Query query={GET_SELECTED_PRODUCT}>
<Mutation
key={v4()}
mutation={SWITCH_SELECTED_PRODUCT}
>
{switchSelectedProduct => (
<Product
onClick={() => {
switchSelectedProduct({
variables: { id: product.id, name: product.name }
});
}}
highlight={
data.selectedProduct
? product.name === data.selectedProduct.name
: i === 0
}
>
<Name>{product.name}</Name>
</Product>
)}
</Mutation>
</Query>
<Mutation refetchQueries={[{query:YOUR_QUERY}>
...code
</Mutation>