接口太多导致页面加载慢,能合并请求吗?
我们首页要同时拉用户信息、订单列表和系统通知,现在是三个独立的 useEffect 去请求,感觉太慢了。试过用 Promise.all 但不知道怎么在 React 里优雅地处理状态更新,代码一写就乱。
有没有推荐的合并方式?比如封装成一个 hook 或者用 RTK Query 这类工具?
useEffect(() => {
fetch('/api/user').then(res => setUser(res.data));
}, []);
useEffect(() => {
fetch('/api/orders').then(res => setOrders(res.data));
}, []);
useEffect(() => {
fetch('/api/notifications').then(res => setNotis(res.data));
}, []);
然后在组件里直接用:
如果项目里到处都要这种组合请求,可以再抽象一层通用 hook,比如:
用法:
RTK Query 也行,但如果你只是想简单合并请求,上面这种轻量方案更直接,不用引入新依赖,改起来也方便。