You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React如何通过JSON外键关联显示状态名称(Axios+JSON Server)

问题描述

我试图从本地项目的JSON文件中展示data数据列表,该JSON文件内的data与status存在关联关系。JSON文件内容如下:

{
  "data": [
      {
         "id": 1383,
         "productID": "10002",
         "productName": "Test 2",
         "amount": "1000",
         "customerName" : "abc",
         "status": 1,
         "transactionDate": "2022-08-15 13:14:52",
         "createBy" : "abc",
         "createOn" : "2022-07-10 13:14:52"
      }
  ],
  "status": [
      {
          "id" : 0,
          "name" : "SUCCESS"
      },
      {
          "id" : 1,
          "name" : "FAILED"
      }
  ]
}

我希望展示data列表时,显示status对应的name属性(如FAILED/SUCCESS),而非data中的status数字值(如1)。目前我使用Axios和JSON Server从本地项目获取数据,请问该如何实现?

解决方案

1. 获取完整数据

通过Axios请求JSON Server接口,拿到包含data和status的完整数据集:

import axios from 'axios';

axios.get('http://localhost:3000/你的数据接口') // 替换为实际的JSON Server接口地址
  .then(res => {
    const { data: transactions, status: statusOptions } = res.data;
    // 执行后续关联逻辑
  })
  .catch(err => console.error('数据请求失败:', err));

2. 构建状态映射表

把status数组转换成键值对形式的映射表,方便快速查找状态名称:

const statusMap = statusOptions.reduce((acc, curr) => {
  acc[curr.id] = curr.name;
  return acc;
}, {});
// 转换后得到:{ 0: 'SUCCESS', 1: 'FAILED' }

3. 关联数据与状态名称

遍历原始data列表,将每个项的数字status替换为对应的名称:

const formattedTransactions = transactions.map(item => ({
  ...item,
  // 若匹配不到对应状态,显示默认值'UNKNOWN'
  status: statusMap[item.status] || 'UNKNOWN'
}));

4. 渲染展示

现在formattedTransactions中的每个项的status字段已经是对应的名称(如"FAILED"),直接用它渲染列表即可。以下是React示例:

return (
  <div className="transaction-list">
    {formattedTransactions.map(trans => (
      <div key={trans.id} className="transaction-item">
        <p>产品:{trans.productName}</p>
        <p>客户:{trans.customerName}</p>
        <p>状态:<span className="status">{trans.status}</span></p>
      </div>
    ))}
  </div>
);

内容的提问来源于stack exchange,提问作者DenjanD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:35:35