我有一个用户表,每个用户可以在加载状态,例如显示加载微调在用户的行。BE上加载状态结束后,FE仍显示加载指示灯。我决定做一个逻辑,每5秒做一次API调用,检查用户是否仍处于加载状态。
我有一个查询,它返回的用户显示在表中。
const {
data: users,
refetch: usersRefetch
} = useGetUsersQuery()
我有类似的查询,调用完全相同的API端点,但用于与当前显示在表中的原始数据进行比较。
const [trigger, {
data: usersValidator,
isSuccess: usersValidatorIsSuccess
}] = useLazyGetUsersValidatorQuery()
我有一个useEffect,它将原始数据与验证器数据进行比较
useEffect(() => {
const timeout = setTimeout(() => {
if (usersValidatorIsSuccess) {
if (JSON.stringify(users) != JSON.stringify(usersValidator)) {
refetch()
} else {
trigger()
}
}
}, 2000)
return () => clearTimeout(timeout)
}, [usersValidatorIsSuccess])
usersValidatorIsSuccess有一个相同的值- true,所以useEffect只运行一次。是否有一些优雅的方法如何重置RTK查询isSuccess状态的需求?我找到了这个解决方案
How to reset Redux toolkit query state (query, not mutation)?
但是看起来不太好,有更好的解决办法吗?
1条答案
按热度按时间toe950271#
我认为突变只用于POST/PUT/POST,然后使标签无效。
但我的案子有点棘手。我决定使用mutation作为GET方法。
然后我可以使用重置方法。