数据不改变,但组件的重新渲染发生在每次取回。我做了一些研究,发现关于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的总体返回值执行一个浅层的相等性检查,以确定是否强制呈现。也就是说,如果任何返回的对象值改变引用,它将触发渲染。如果创建一个新的数组/对象并将其用作回调中的返回值,则由于每次回调运行时都被标识为新项,因此会影响性能优势。当有意提供一个空数组/对象时,为了避免在每次回调运行时重新创建它,可以在组件外部声明一个空数组/对象,以保持稳定的引用。
我想这个链接会对你有所帮助。
为了避免不必要的重新呈现,我们需要确保我们提取的任何数据都被正确记忆。要做到这一点,我们应该创建一个新的选择器实例,组件可以在每次呈现时重用它,以便选择器记住结果。