【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 调用,或者任何你用来从后台获取数据的方法!这是一种灵活的处理数据映射的方式,而且不会在组件层面造成太多干扰。


相关推荐
feixing_fx13 分钟前
CSS Grid 入门:二维布局时代的降维打击
前端·css·前端框架·css3
Lank_M18 分钟前
JPG的8×8块里只要有条边,白底就保不住255
前端
coding漫漫长路21 分钟前
主图纯白检测,阈值放宽到250会放过252的底
前端
计算机魔术师21 分钟前
藏了八个月没被当漏洞的洞,AI红队一晚上翻出来了
前端
用户831348593069823 分钟前
Vue3 v-for:常用用法与开发高频坑点
前端·javascript·vue.js
用户6210075870227 分钟前
Web 3D 开发实践:BIM+GIS 融合需要解决哪些技术问题?
前端·three.js
志尊宝27 分钟前
AI原生前端开发(017):端侧AI与Vue 3结合实战
前端·人工智能·prompt·1024·ai-native
钱栈up28 分钟前
配料秤料位查出来是负数——IoTDB存的是周期增量,我却在拿首尾相减
前端·数据库
Funlang29 分钟前
fun-ui 开源:把浏览器界面接回来
前端·javascript
特立独行的猫A34 分钟前
一份代码,多端产物:仓颉语言的cj-tauri 框架开发桌面和鸿蒙应用指南
前端