如何从 RTK 查询中获取部分数据

How to get partial data from RTK query

我开始使用 RTK 查询,当我只需要获取缓存数据的一个元素时,我不确定是否正确使用它。

我缓存了一个这样的对象:

{
 id: "1",
 age: 18,
 name: "John"
}

在我的一个钩子中,我使用了以下代码:

const { data: { id } = {} } = useMyQuery();

所以我的问题是,如果“name”或“age”发生变化但“id”没有变化,我该如何避免触发我的钩子。

有一种方法可以在此缓存数据上创建备忘录选择器吗?

您想使用 selectFromResult:

const { data: { id } = {} } = useMyQuery(undefined, {
  selectFromResult: ({isSuccess, data}) => ({ isSuccess, data: data.id }) 
};

请注意,这还允许您删除 isLoadingisSuccess 等属性,这也会导致潜在的重新渲染 - 此示例仅保留 isSuccess.