news 2026/5/15 13:39:45

react和vue多个组件在一个页面展示不同内容都是请求一个接口,如何优化提升率性能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
react和vue多个组件在一个页面展示不同内容都是请求一个接口,如何优化提升率性能

一、问题本质(先说清楚)

多个组件在同一页面,各自请求同一个接口,会造成:

  • ❌ 重复网络请求

  • ❌ 重复数据解析

  • ❌ 多次触发渲染

  • ❌ 状态不一致风险

👉本质是:数据源分散 + 请求不可控


二、核心优化思想(一句话)

请求只发一次,数据集中管理,组件只负责“消费数据”。


三、最核心的 5 种优化方案(重点 ⭐⭐⭐)


✅ 方案一:请求上移(最重要,90% 场景适用)

思路

  • 接口请求放在父组件

  • 子组件通过 props 接收

React 示例

function Page() { const [data, setData] = useState(null); useEffect(() => { fetchApi().then(setData); }, []); return ( <> <CompA data={data} /> <CompB data={data} /> </> ); }

Vue 示例

<script setup> const data = ref(null); onMounted(async () => { data.value = await fetchApi(); }); </script> <CompA :data="data" /> <CompB :data="data" />

最简单、最推荐


✅ 方案二:全局状态管理(中大型项目)

适合

  • 页面复杂

  • 多层组件共享

  • 多页面复用

技术选型

  • React:Redux / Zustand / Jotai

  • Vue:Pinia / Vuex

优点

  • 自动去重

  • 数据统一

  • 可缓存


✅ 方案三:请求缓存(非常重要 ⭐)

核心思想

同一个接口 + 参数 → 只请求一次


React 推荐:React Query / SWR

useQuery(['userInfo'], fetchApi);

特性:

  • 自动缓存

  • 请求去重

  • 失效更新

  • 并发合并


Vue 推荐:Vue Query / SWR

useQuery(['data'], fetchApi);

✅ 方案四:接口聚合(后端配合,性能最佳)

思路

  • 后端返回“页面所需完整数据”

  • 前端不拆接口

{ "header": {}, "list": [], "chart": {} }

优点:

  • 网络请求最少

  • 首屏最快


✅ 方案五:请求锁 / Promise 复用(高级)

场景

  • 不能改结构

  • 多组件同时触发

实现思路

let cachePromise = null; function fetchOnce() { if (!cachePromise) { cachePromise = fetchApi(); } return cachePromise; }

👉多个组件共享同一个 Promise


四、性能提升点总结(你可以直接说)

优化点效果
请求合并减少网络开销
数据集中避免重复计算
缓存防止重复请求
减少渲染提升 FPS
状态统一防 bug

五、React / Vue 额外性能细节(加分)

React

  • 使用React.memo

  • useMemo 派生数据

  • 避免 props 引用变化


Vue

  • computed 缓存

  • v-memo(Vue 3.3+)

  • 合理拆分 reactive


六、真实项目中的标准优化流程(面试非常加分)

发现重复请求 → 抽离请求到父组件 / store → 加缓存层(React Query / Pinia) → 子组件只消费数据

七、30 秒面试标准回答(直接背)

多组件请求同一接口时,我会将请求上移到父组件或全局状态中统一管理;
同时引入请求缓存机制,确保相同参数只发一次请求;
组件只负责展示数据,从而减少重复请求、避免多余渲染并提升整体性能。


八、一句话终极总结

不要让组件“自己拿数据”,而要让数据“主动供给组件”。


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 4:25:23

英国留学机构推荐:UKEC的全流程服务体系

服务体系概述UKEC提供“申请规划签证辅导行前准备”全流程服务&#xff0c;帮助学生解决留学申请过程中的各种问题。此外&#xff0c;UKEC还提供英国本土后续服务&#xff0c;包括住宿安排、接机服务、转学升学支持和生活服务。各环节详解1. 申请规划UKEC为学生提供申请规划服务…

作者头像 李华
网站建设 2026/5/11 12:11:06

国内卫浴十大品牌华艺卫浴:以创新材质与美学设计,定义国产洁具新高度

国内卫浴十大品牌华艺卫浴打破 “国货 性价比” 的刻板印象,以 “国产洁具卫浴十大品牌” 的严苛标准,将创新材质、精密工艺与国际美学深度融合,推出多款兼具健康属性、耐用品质与颜值质感的产品,让国货卫浴在高端市场实现突围。从核心材质到细节设计,华艺卫浴始终践行 “好看…

作者头像 李华
网站建设 2026/5/10 9:01:30

Java毕设选题推荐:基于springboot的老年大学信息管理系统银发族终身学习与健康管理平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/13 3:36:39

谷歌用一堆不赚钱的AI小玩意,给科技圈上了一课

谷歌的这些艺术实验项目&#xff0c;若从商业角度看&#xff0c;实在说不上有什么直接价值。但正是这些看似没啥用的项目&#xff0c;却藏着谷歌最真诚的人文坚守。庄子・人间世》中有这样一则小故事&#xff1a;南伯子綦在商地的山丘游玩时&#xff0c;见到一棵异常高大的树&a…

作者头像 李华
网站建设 2026/5/9 3:27:15

没博士没论文,这些人靠什么「野路子」杀进OpenAI等顶级AI大厂?

最近&#xff0c;OpenAI 资深研究科学家 Noam Brown 在 X 上分享了几个真实故事&#xff0c;证明了通过个人努力和巧妙策略&#xff0c;即使没有传统学术履历&#xff0c;也能获得机会。许多人梦想进入像 OpenAI 这样的前沿实验室从事研究工作&#xff0c;然而对于那些缺乏传统…

作者头像 李华