【React】怎么解决后端接口数据与前端数据的适配问题?

大概所有的 React 开发经常会遇到的问题是:

  • 前端同学:后端又改字段了,我好多地方都用了,我得一个一个改啊?
  • 前端同学:你们几个后端,都返回的啥啊?一个用驼峰式命名法;一个用下划线命名法;还有用帕斯卡命名法的;能不能统一一下?
  • 前端同学:怎么这个接口数据包在 data 里,另一个接口又包在 list 里,有毛病啊?
  • ...

后台 API 返回值和组件数据结构很多时候并不是能很好地匹配。毕竟,前端和后端之间的开发是分开进行的,因此它们的数据结构不匹配是不可避免的。

虽然这也可以通过前端后端之间建立一些接口规范来解决。但很多时候,你又不能保证每个人都能贯彻到位。或者遇到一些比较奇葩的人,而你又是个弱势的小前端,你也没法去 battle 啊,那怎么办?只能自己动手,丰衣足食了呗。

这时,我们就可以应用名为适配器(Adapter)的设计模式。适配器是一种设计模式,它允许我们将某个对象 "适配" 到另一个对象的结构中。

适配器是一种结构设计模式,允许接口不兼容的对象进行协作。有兴趣可以看看这篇:adapter

这种设计模式有很多种实现方式。因此,无论你想采用哪种方法,都没有问题。只要主要目的是接受输入并在此基础上产生新的输出。这样就可以了!

🤔 问题

假设我们有这样一个后台 API 响应:

然后我们就有了这个接受不同 props 的 React 组件。

在此示例中,通知组件接受不同的 props,并期望在 statusText 和 typeText 上使用不同的值。我们如何才能在不对组件或后台 API 响应进行大量重构的情况下匹配它们呢?

💡 适配

为了匹配或适配来自后台 API 响应的 React 组件,我们可以这样创建适配器:

然后是通知适配器:

正如你所看到的,我们现在正在 "调整 "后台 API 响应,以适应通知组件。

我们还为 FE 添加了一些额外的逻辑映射,如 statusText、typeText。

由于笔者大多数项目中都使用了 react-query 这个服务端状态管理工具,所以,上面演示的是如何将适配器与 react-query 结合使用!我们使用 react-query 的 select 方法将原始数据 "适配" 为我们需要的数据。

当然,这并不局限于 react-query,也可以应用于简单的获取 API 调用,或者任何你用来从后台获取数据的方法!这是一种灵活的处理数据映射的方式,而且不会在组件层面造成太多干扰。


相关推荐
AiMan37 分钟前
腾讯ima还是不可以导出左侧所有对话,只能单条导出,方法不对吗
前端
去伪存真40 分钟前
并发量一高就装死?Agent 全链路“防猝死”手册
前端·agent
Moment42 分钟前
AI 编程时代,聊聊我的 Mac mini 双屏桌面
前端·后端
AiMan1 小时前
先确认能不能一次把Microsofat Copilot所有内容打包一个文件导出
前端
总要学点什么1 小时前
第97篇:三维数据加载-城市建筑白模自定义着色器——让一条光带沿高度扫上去,快慢却由帧率说了算
前端·gis·webgl·cesium·着色器·空间分析·白模
上海懒图科技1 小时前
工厂厂区电子地图定位导航:厂区人车精准定位,安全合规双保障
前端·arcgis·vue
西安小哥2 小时前
端侧跑大模型,真正的门槛不在参数量:一次 596 秒到 10 秒的压缩路径复盘
前端·人工智能
陈随易2 小时前
Cloudflare 出钱,Vite 团队挑人,44 个维护者分 30 万美元
前端·后端·程序员
恋猫de小郭3 小时前
Flutter THLC 的 WebView 滚动终于从 70 FPS 提升到 120 FPS
android·前端·flutter
严肃小白兔3 小时前
TanStack Router 更新构建工具链:Node.js 兼容性、路由分割与前端工程实践
前端·node.js·状态模式