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>