redux 即使缓存有效,RTK查询挂接也会导致重新渲染

m4pnthwp  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(112)

我有一个钩子useLazyGetDataQuery,它返回的“父”数据对象发生了变化,即使该高速缓存在发出多个传递相同查询参数的请求时有效。
const [getData, data] = useLazyGetDataQuery()
这里返回的data对象的status属性从pending更改为fulfilled,导致重新呈现。不能使用选择器,因为它需要传递相同的参数,而这些参数在第二次调用中不可用,因为它们只在我的submitForm回调中可用。
即使缓存中的数据不应该被更新,组件也不会重新渲染,组件会重新渲染,因为这个对象的一些属性发生了变化,例如它的status。状态从pending更改为fulfilled,这会导致不必要的重新呈现,因为API响应与缓存的数据相同。
我该如何阻止这些不必要的报复?

wmvff8tz

wmvff8tz1#

您不需要使用useLazyGetDataQuery()返回的整个结果对象。只需使用解构来获取您需要的数据:

const [getData, { data, error, isLoading }] = useLazyGetDataQuery()

相关问题