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

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

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

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

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

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

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

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

🤔 问题

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

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

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

💡 适配

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

然后是通知适配器:

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

我们还为 FE 添加了一些额外的逻辑映射,如 statusTexttypeText

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

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


相关推荐
Patrick_Wilson6 小时前
从一次 Safari 白屏,聊聊 CDN 外置 React 的坑与前端监控盲区
前端·react.js·cdn
lichenyang4536 小时前
从 Demo 到本地 HAR 包:把 HarmonyOS JSBridge 运行时做成可复用库
前端
不简说6 小时前
拖拽DIY表格插件来了!sv-print 七月更新:这次真的能自己拼表格了
前端·javascript·前端框架
ssshooter7 小时前
小程序分包页面报 "has not been registered yet" 的隐蔽根因:一个动态 import 拖垮整个分包
前端·javascript·微信小程序
鹏多多7 小时前
Web浏览器后台离线通知方案实现以及兼容指南
前端·javascript·vue.js
yangmu32037 小时前
Vue3 响应式系统深度解析:从 Proxy 到依赖追踪
前端·javascript·vue.js
还有多久拿退休金7 小时前
AI 写了代码,谁替你"试毒"?
前端·架构·ai编程
大E帝国子民17 小时前
OpenCloudOS Server 9 安装 Nginx 完整指南
前端·网络·nginx
少年白马醉春风丶7 小时前
【AI Agent面试题】Agent 的自主性分级,怎么理解?
前端
yingyima7 小时前
Docker Compose 紧急救援:凌晨3点服务器报警的解决方案
前端