UseQuery 在通过 apollo react 使用 useMutations 重定向后不起作用

Posted

技术标签:

【中文标题】UseQuery 在通过 apollo react 使用 useMutations 重定向后不起作用【英文标题】:UseQuery doesn't work after redirect with useMutations by apollo react 【发布时间】:2021-11-04 19:07:10 【问题描述】:

useMutation后,用户转到其他页面。

有useQuery,但是不行。

export default () => 
  const history = useHistory();
  const [click, setClick] = useState(false);
  const [getStockMutation] = useMutation(getStock, 
    variables:  click: click ,
    onCompleted( getStockMutation ) 
      setTimeout(() => 
        history.push("/home");
      , 500);
    ,
  );

  const onClick = async () => 
    setClick(true);
    try 
      await getStockMutation();
     catch (e) 
      toast.error("아이디와 비밀번호를 다시 확인 해 보세요.");
    
  ;

这是突变页面。如果用户单击按钮,则 getStockMutation 有效。 如果 getStockMutation 完成,转到“/home”

export default () => 
  const  data, loading  = useQuery(allStock);
  const history = useHistory();
  console.log(data);

  useEffect(() => 
    if (data && data.allstock.length === 0) 
      history.push(`/getAccount`);
    
  , [data, history]);

这是 useQuery 页面(主页)。有 useQuery(allStock) 但它不起作用。 console.log 显示 allstock:Array(0), 我在 localhost:8000/grahpql 中检查它,


  "data": 
    "allstock": [
      
        "id": "57",
        "stockname": "LX세미콘"
      
    ]
  

我检查网络,只有突变(getStock)通信工作,但useQuery(allStock)通信不起作用。

【问题讨论】:

【参考方案1】:

我修好了。有用。我将 fetchPolicy 添加到 useQuery。

export default () => 
  const  data, loading, error  = useQuery(allStock, 
    fetchPolicy: "network-only",
  );
  const history = useHistory();
  console.log(data, loading, error);

【讨论】:

以上是关于UseQuery 在通过 apollo react 使用 useMutations 重定向后不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 react/apollo 中调用条件 useQuery 钩子

将参数传递给 react-apollo-hooks useQuery

在@apollo/react-hooks 的 useQuery 钩子中忽略了跳过参数

使用 Jest 模拟 @apollo/react-hooks useQuery

如何将 React 钩子(useContext、useEffect)与 Apollo 反应钩子(useQuery)结合起来

仅在第一次以惯用方式和优雅方式呈现组件时执行 react-apollo-hooks useQuery