RTK查询可以用于在后续查询中增量更新单个存储对象吗



我使用的是MapBox中的地图,每次onDragStopped后,地图的边界都会以{nw,ne,se,sw}坐标的形式发送到服务器,在服务器上,这些边界的几何图形会与存储的地区(县、国家…(的几何图形进行比较。如果这些地区与地图多边形相交,它们会作为其Id的数组返回("AF"=阿富汗(。

目前,我在RTK查询中使用这种方法(其中从redux存储中选择mapPolygon(:

const allRegionsQuery = useGetAllRegionsWithinBoundsQuery(
{ bbox: mapPolygon },
{
skip: mapPolygon === null
}
);

这种方法有效,但由于用户移动地图时mapPolygon本质上总是不同的,RTK最终会存储多个查询结果,其中参数不同,但新数据可能只添加了一个新区域。

如何获取地图的相交区域,但仅使用新区域更新同一客户端对象,从而使本地存储的区域集是所有的查询结果?这只能通过RTK查询完成吗?还是我必须考虑其他方法?

例如:

localRegions = ['AF', 'BE'];
mostRecentQueryResult = ['AF', 'JP', 'AU'];
---
updatedLocalRegions = ['AF', 'BE', 'JP', 'AU']

我读过或考虑过的方法:

  1. RTK查询流:我从未使用过流,所以我不确定当bbox作为arg发送时,它在这里的应用效果如何
  2. 我可以在每个dragStopped上获取数据,当我收到数据时,我可以获取它和一些已经存储的对象的并集,并不断更新该存储的对象。(这将从根本上消除RTK查询的存储优势,这是最简单的方法吗?(

是的,在这种情况下,RTKQ不会对您有太大帮助——您仍然可以使用它进行提取,但必须将存储移出到一个单独的切片中,也许可以在带有端点匹配器的自定义切片中使用extraReducers

最新更新