chr*_*ane 9 reactjs react-query
我需要继续获取数据,直到满足条件为止,我可以使用下面的代码片段设置按时间间隔获取数据,但我不知道如何fetchData在需要时停止。这可能吗?
const { status: answersStatus, data: answers } = useQuery(
['fetchData', { context, activity, stage, country }],
fetchData,
{refetchInterval: 2000});
Run Code Online (Sandbox Code Playgroud)
TkD*_*odo 16
更新:
从react-query v3.25.0开始,refetchInterval可以接受一个函数来更好地适应这个用例:
refetchInterval: data => (isConditionMet(data) ? false : 2000)
Run Code Online (Sandbox Code Playgroud)
原答案:
与当地州:
const [refetchInterval, setRefetchInterval] = React.useState(2000)
const { status: answersStatus, data: answers } = useQuery(
['fetchData', { context, activity, stage, country }],
fetchData,
{refetchInterval});
Run Code Online (Sandbox Code Playgroud)
您可以将其设置refetchInterval为false或0将其关闭。如果您想根据响应来执行此操作,onSuccess或onError回调onSettled可能是最好的地方:
const [refetchInterval, setRefetchInterval] = React.useState(2000)
const { status: answersStatus, data: answers } = useQuery(
['fetchData', { context, activity, stage, country }],
fetchData,
{
refetchInterval,
onError: () => setRefetchInterval(0)
});
Run Code Online (Sandbox Code Playgroud)
对我来说,它导致无限循环,直到将函数传递给refetchInterval类似的函数:
refetchInterval: data => (checkMyResponseHere(data) ? false : 2000)
PS 反应查询 v.3.38.0
| 归档时间: |
|
| 查看次数: |
16266 次 |
| 最近记录: |