Redux Toolkit查询轮询导致每次抓取都重新呈现



数据不改变,但组件的重新渲染发生在每次取回。我做了一些研究,发现关于selectFromResult属性的信息,只访问数据本身,而不是is抓取prop或其他

这是我从apisice查询:

getNotification: builder.query<GetNotificationsResponse, GetNotificationsRequest>({
query: ({ page, limit }) => ({
url: `notifications?page=${page}&limit=${limit}`,
method: 'GET',
}),
}),

下面是我如何使用轮询和selectFromResult

const result = useGetNotificationQuery(
{
page: 1,
limit: 10,
},
{
pollingInterval: 1000,
selectFromResult: data => data.data,
},
);

注意,对selectFromResult的总体返回值执行一个浅层的相等性检查,以确定是否强制呈现。也就是说,如果任何返回的对象值改变引用,它将触发渲染。如果创建一个新的数组/对象并将其用作回调中的返回值,则由于每次回调运行时都被标识为新项,因此会影响性能优势。当有意提供一个空数组/对象时,为了避免在每次回调运行时重新创建它,可以在组件外部声明一个空数组/对象,以保持稳定的引用。

我想这个链接会对你有所帮助。

为了避免不必要的重新呈现,我们需要确保我们提取的任何数据都被正确记忆。要做到这一点,我们应该创建一个新的选择器实例,组件可以在每次呈现时重用它,以便选择器记住结果。

相关内容

  • 没有找到相关文章

最新更新