redux 如何启用初始数据提取使用一个端点,而将来的提取使用另一个端点?

dfty9e19  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(136)

我有一个在2个表中显示数据的组件和一个具有以下端点getAllTablesgetTable1getTable2的API。
getAllTables

{
  table1: [...],
  table2: [...],
}

getTable1

{
  table1: [...]
}

getTable2

{
  table2: [...]
}

我调用getAllTables API端点来获取初始加载时两个表的所有数据,然后使用按钮来触发每个表的刷新,Refresh table1Refresh table2分别调用API端点getTable1getTable2
我的意图是最初使用端点getAllTables加载表,然后Refresh table1应该高速缓存失效,以使用getTable1自动触发刷新,而Refresh table2应使缓存失效,以使用getTable2自动触发刷新。
我知道它不会自动触发刷新,因为该数据仅订阅到getAllTables端点。
我是否能够实现所需的功能?如果可以,如何实现?

f1tvaqid

f1tvaqid1#

您可以设置useEffect,使其具有一个空依赖项,在初始加载时获取所有表,而刷新按钮订阅获取表1和表2。
下面是一些虚拟代码,您可以将RTK与之结合使用:

const [table1, setTable1] = useState([]);
const [table2, setTable2] = useState([]);

useEffect(() => {
  const data = getAllTables(); // url point to get all

  setTable1(data.table1);
  setTable2(data.table2);
},[])

function refreshData() {
  cosnt table1Data = getTable1(); // url point to get table1 data
  cosnt table2Data = getTable2(); // url point to get table2 data

  setTable1(table1Data);
  setTable2(table2Data);
}

return (
  <button onClick={refreshData}>refresh</button>
);

失效过程只是覆盖以前的数据。

相关问题