RTK 查询是否根据请求顺序维护结果顺序 (FIFO)

问题描述 投票:0回答:2

我有一个 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 标记每个接收到的数据等不同的解决方案在这里是不可能的。

reactjs redux react-redux rtk-query
2个回答
0
投票

不,这会导致性能非常低下,因为通常您希望在数据可用时立即显示数据,而不是仅仅因为其他一些查询停滞 30 秒而停滞 30 秒。

你在这里的例子并没有清楚地表明你真正想要做什么 -

useQuery
钩子只会为你现在传入的值返回新结果,所以你不可能有到达此处的多个请求的多个结果。

此外,

useEffect
似乎将可能不属于您的组件内部的逻辑联系起来。您确定不想使用端点生命周期吗?


0
投票

我遇到了同样的问题,映射数组时存在索引问题,那么你应该为每个项目放置唯一的键。 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.