arj*_*jun 14 reactjs react-apollo apollo-client react-apollo-hooks
使用我的useLazyQuery()钩子@apollo/react-hooks可以在单击按钮时执行查询。但是我不能使用它在连续点击时执行相同的查询。
export default ({ queryVariables }) => {
const [sendQuery, { data, loading }] = useLazyQuery(GET_DIRECTION, {
variables: queryVariables
});
return <div onClick={sendQuery}>Click here</div>;
}
Run Code Online (Sandbox Code Playgroud)
在上面sendQuery只执行一次。
har*_*isu 21
useLazyQuery 使用缓存优先的默认网络策略所以我假设你的 onClick 函数实际上执行但是因为返回的值是缓存中的内容,React 注意到数据没有变化,因为状态没有更新,因为返回的数据是什么它已经有这种方式没有重新渲染,事情似乎没有改变。我建议你应该传入一个不同的网络策略,比如
const [sendQuery, { data, loading }] = useLazyQuery(GET_DIRECTION, {
variables: queryVariables,
fetchPolicy: "network-only"
});
Run Code Online (Sandbox Code Playgroud)
这意味着您需要来自 api 的最新信息,因此基本上没有缓存。您可能还想尝试其他选项,看看哪一个最适合您,cache-and-network:您可以在此处了解更多信息,了解-apollo-fetch-policies
| 归档时间: |
|
| 查看次数: |
4299 次 |
| 最近记录: |