Redux工具包查询重置查询状态

7xzttuei  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(114)

我有一个用户表,每个用户可以在加载状态,例如显示加载微调在用户的行。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)?
但是看起来不太好,有更好的解决办法吗?

toe95027

toe950271#

我认为突变只用于POST/PUT/POST,然后使标签无效。
但我的案子有点棘手。我决定使用mutation作为GET方法。

getUsersValidator: build.mutation({
    query: (payload) => {
        return {
            url: "/users",
            method: "GET"
        }
    }
})

然后我可以使用重置方法。

相关问题