我有一个 React 组件,其中使用
RTKQuery
获取数据。根据 useFetchQuery
属性的变化,可以多次使用相同的 deviceData
。
我需要保持请求结果与请求启动相同的顺序 (
FIFO
)。某些获取请求可能比其他请求花费更长的时间,因此第一个请求的结果可能会在第二个请求之后出现。所以问题是,在这种情况下 RTKQuery 是否保持结果的顺序?
这里我有简化的代码:
const DataFetchComponent = ({deviceData}) => {
const [queryId, setQueryId] = useState(null)
const [processedData, setProcessedData] = useState([])
const { data: receivedData } = useFetchQuery({ id: queryId } , {skip: !queryId})
useEffect(() => {
setQueryId(deviceData.id)
}, [deviceData]);
useEffect(() => {
setProcessedData([...processedData, receivedData])
}, [receivedData]);
}
注意: 原始代码要复杂得多,因此使用 id key 标记每个接收到的数据等不同的解决方案在这里是不可能的。