redux RTK顺序查询和变异

3okqufwl  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(145)

我在使用rtk时遇到了一个关于如何顺序使用变异和查询的情况。在我的用例中,在像/status/:id/:version这样的路由中,我需要基于Id和版本创建一个作业,然后监视创建的进度(大约需要30秒)。

const {id, version} = useParams()
const pollRef = useRef(1000)

const [createJob, {data: postData, error, isSuccess}] = useCreateJobMutation()
const {data, ...} = useGetJobIdQuery(postData[0].id, { pollingInterval: pollRef.current })

if (data.progress === 100) {
       pollRef.current = 0 // stop polling GET route
       use data ...
     }

useEffect(()=> {
   createJob(newJob) // newJob is created based on id, version 
}, [])

我需要等待postData有效(不是未定义),问题是如何将变异的结果发送到查询而不违反钩子规则。(我得到错误在上一次渲染中渲染了更多钩子。)

if (isSuccess) {
   useGetJobIdQuery(...) // violate hook rules
}

useCreateJobMutation()useGetJobIdQuery()单独使用时工作正常,但不能一起使用

w1jd8yoj

w1jd8yoj1#

您可以跳过查询:

import { skipToken }  from '@reduxjs/toolkit/query/react'

useGetJobIdQuery(isSuccess ? jobId : skipToken)

相关问题