RTK 查询能否用于在后续查询中增量更新单个存储对象?
Can RTK queries be used to incrementally update a single stored object across subsequent queries?
我正在使用来自 MapBox 的地图,在每次 onDragStopped 之后,地图的边界作为 {nw,ne,se,sw} 坐标发送到服务器,在那里将这些边界的几何形状与存储的几何形状进行比较区域的几何形状(县、国家……)。如果区域与地图多边形相交,它们将作为其 ID 数组返回(“AF”= 阿富汗)。
目前,我将这种方法与 RTK 查询一起使用(其中 mapPolygon 从 redux 存储中选择):
const allRegionsQuery = useGetAllRegionsWithinBoundsQuery(
{ bbox: mapPolygon },
{
skip: mapPolygon === null
}
);
这种方法可行,但由于当用户移动地图时 mapPolygon 本质上总是不同的,RTK 最终存储了多个查询结果,其中 args 不同但新数据可能只添加了一个新区域。
如何获取地图的相交区域,但只用新区域更新同一个客户端对象,这样本地存储的区域集是
所有的查询结果?这是否只能通过 RTK 查询来完成,还是我必须考虑其他方法?
例如:
localRegions = ['AF', 'BE'];
mostRecentQueryResult = ['AF', 'JP', 'AU'];
---
updatedLocalRegions = ['AF', 'BE', 'JP', 'AU']
我读过或考虑过的方法:
- RTK 查询流:我从未使用过流,所以我不确定当 bbox 作为 arg 发送时它在这里的应用效果如何。
- 我可以在每个 dragStopped 上获取数据,当我收到数据时,我可以将它与一些已存储的对象结合起来,然后继续更新该存储的对象。 (这基本上会消除 RTK 查询的存储优势,这是最简单的方法吗?)
是的,在这种情况下,RTKQ 不会对您有太大帮助 - 您仍然可以使用它来获取数据,但必须将存储移出到一个单独的切片中,也许可以使用 extraReducers
在带有您端点的已实现匹配器的自定义切片中。
我正在使用来自 MapBox 的地图,在每次 onDragStopped 之后,地图的边界作为 {nw,ne,se,sw} 坐标发送到服务器,在那里将这些边界的几何形状与存储的几何形状进行比较区域的几何形状(县、国家……)。如果区域与地图多边形相交,它们将作为其 ID 数组返回(“AF”= 阿富汗)。
目前,我将这种方法与 RTK 查询一起使用(其中 mapPolygon 从 redux 存储中选择):
const allRegionsQuery = useGetAllRegionsWithinBoundsQuery(
{ bbox: mapPolygon },
{
skip: mapPolygon === null
}
);
这种方法可行,但由于当用户移动地图时 mapPolygon 本质上总是不同的,RTK 最终存储了多个查询结果,其中 args 不同但新数据可能只添加了一个新区域。
如何获取地图的相交区域,但只用新区域更新同一个客户端对象,这样本地存储的区域集是 所有的查询结果?这是否只能通过 RTK 查询来完成,还是我必须考虑其他方法?
例如:
localRegions = ['AF', 'BE'];
mostRecentQueryResult = ['AF', 'JP', 'AU'];
---
updatedLocalRegions = ['AF', 'BE', 'JP', 'AU']
我读过或考虑过的方法:
- RTK 查询流:我从未使用过流,所以我不确定当 bbox 作为 arg 发送时它在这里的应用效果如何。
- 我可以在每个 dragStopped 上获取数据,当我收到数据时,我可以将它与一些已存储的对象结合起来,然后继续更新该存储的对象。 (这基本上会消除 RTK 查询的存储优势,这是最简单的方法吗?)
是的,在这种情况下,RTKQ 不会对您有太大帮助 - 您仍然可以使用它来获取数据,但必须将存储移出到一个单独的切片中,也许可以使用 extraReducers
在带有您端点的已实现匹配器的自定义切片中。