当前位置: 首页 > news >正文

龙游县建设局网站晋州建设规划局网站

龙游县建设局网站,晋州建设规划局网站,网页设计师个人网站,免费客源软件问题:组件A和组件B都用某个请求的数据,但是不知道组件A和组件B谁先渲染,怎么设计请求函数可以复用数据?答案:通过缓存请求状态和复用 Promise来设计请求函数,确保无论哪个组件先发起请求,最终都…

问题:组件A和组件B都用某个请求的数据,但是不知道组件A和组件B谁先渲染,怎么设计请求函数可以复用数据?

答案:通过缓存请求状态复用 Promise来设计请求函数,确保无论哪个组件先发起请求,最终都能共享同一份数据。关键是:Map数据结构缓存请求

// 缓存对象:key为请求标识(如URL),value为{ promise: 请求的Promise, data: 缓存的数据 }
const requestCache = new Map();/*** 复用请求的工具函数* @param {string} key - 请求的唯一标识(如API地址)* @param {Function} requestFn - 实际发起请求的函数(返回Promise)* @returns {Promise} - 返回请求的Promise,确保同一key的请求只发起一次*/
export function fetchSharedData(key, requestFn) {// 如果缓存中已有该请求,直接返回缓存的Promiseif (requestCache.has(key)) {const { promise } = requestCache.get(key);return promise;}// 发起新请求,并缓存Promiseconst promise = requestFn().then((data) => {// 请求成功后,更新缓存中的数据requestCache.set(key, { promise, data });return data;}).catch((error) => {// 请求失败时,清除缓存(允许重试)requestCache.delete(key);throw error; // 抛出错误供组件捕获});// 先缓存Promise(此时请求可能还在进行中)requestCache.set(key, { promise, data: null });return promise;
}

使用

// 假设这是实际的API请求函数
function fetchUserInfo() {return fetch('/api/user').then(res => res.json());
}// 组件A或者B
function ComponentA() {const [user, setUser] = React.useState(null);React.useEffect(() => {// 用key='userInfo'标识请求,确保和另一个组件复用fetchSharedData('userInfo', fetchUserInfo).then(data => setUser(data)).catch(err => console.error('请求失败:', err));}, []);return <div>组件A: {user?.name}</div>;
}

http://www.dtcms.com/a/478709.html

相关文章:

  • Java-Spring入门指南(二十四)SSM整合HTML:解决CSS/JS静态资源被过滤问题
  • 安阳做网站多少钱邢台最新通告今天
  • 如何做高并发网站的架构设计地方型旅游网站
  • 网站文章伪原创怎么做网站建设策划基本流程图
  • 条件概率、全概率、贝叶斯
  • 用mvc做网站报告自己的电脑做服务器搭建网站
  • 更换网站模板html所有标签大全
  • 软件模拟存储,SCSI映射StarWind5.4 企业版
  • DFS和BFS算法和回溯算法
  • c++ 标准模板库练习
  • 购物网站建设费用wordpress调用python脚本
  • 基于深度学习的数字图像分类实验与分析
  • 图像视觉——颜色识别
  • 扬州网站建设哪家公司好电商运营适合女生吗
  • HTML应用指南:利用POST请求获取全国兴业银行网点位置信息
  • Excel处理控件Aspose.Cells教程:使用 Python 将 HTML 转换为 Excel
  • 菏泽做网站的公司可玩儿小程序可以加盟么
  • 阿里云发布《AI 原生应用架构白皮书》
  • 如何在百度上注册自己的网站做网站运营有提成吗
  • 分布式数据库架构:从分库分表到NewSQL实战
  • Java的双重检查锁机制(DCL)与懒加载的单例模式
  • Qt代码-QVector向量数组的增删改查插入统计复制
  • 深圳建设门户网站博客wordpress
  • 免费做网站的好不好大理悦花轩客栈在哪些网站做推广
  • 语义与认知中的循环解释悖论及其对人工智能自然语言处理深层语义分析的影响与启示
  • 购物类网站百度关键词搜索排名
  • 微信公众号的跳转网站怎么做外贸网站要先备案吗
  • 【VSCode+WSL】开发环境随身携带:我的VSCode+cpolar远程工作站实战
  • 长沙做最好网站东营建设信息网的网址
  • Kubernetes Pod 全面详解(基础 + 进阶)