gpt4 book ai didi

javascript - 如何在 React 应用程序中保留数据以最小化服务器调用

转载 作者:行者123 更新时间:2023-11-30 13:45:42 24 4
gpt4 key购买 nike

在我的一个 ReactJS 页面中,有两个下拉菜单,在选择一个或另一个的值时,它会调用服务器 API 来获取数据。为了获取数据,我正在使用 useEffect Hook ,如下所示

export const useFetch = () => {
const [state, setState] = useState({ data: null, loading: true });

useEffect(() => {
setState(state => ({ data: state.data, loading: true }));
fetch(url)
.then(x => x.text())
.then(y => {
setState({ data: y, loading: false });
});
}, []);

return state;
};

现在,从下拉菜单中,可以进行一定数量的组合来获取 API 数据,因为选项不会太大,对于任何组合,API 的值将保持不变,所以我需要阻止 API 调用,如果之前已经获取了相同的组合数据并仅利用之前的组合数据并最小化我的组件重新渲染(如果路由更改并且返回,这也是一种情况)。

请建议在这种情况下如何处理。我已经研究了浏览器的 localstorage 但如果浏览器/选项卡关闭等,清理 localstorage 值会有点问题

最佳答案

  • 如果您希望在应用程序启动时保留数据,请使用 Redux
  • 如果您希望为整个 session 保留数据,请使用 sessionStorage(浏览器窗口关闭后将被删除)
  • 如果您希望数据在有效期内一直保留,请使用 localStorage,如果需要,您可以在beforeUnload 事件 上清除存储

例子:

  componentDidMount() {
window.addEventListener('beforeunload', this.handleBeforeunload)
}

componentWillUnmount() {
window.removeEventListener('beforeunload', this.handleBeforeunload)
}

handleBeforeunload() {
localStorage.removeItem('myItem')
}

关于javascript - 如何在 React 应用程序中保留数据以最小化服务器调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59376446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com