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

如何在React中展示服务器返回的嵌套对象格式PDF链接?

处理React中嵌套对象格式的PDF链接展示问题

我来帮你搞定这个React里展示嵌套PDF链接的问题,两种方法任你选:

方法一:直接遍历嵌套对象展示链接

不需要提前转换结构,直接用Object.entries()遍历tickets的外层和内层键值对即可,同时可以处理空链接的情况:

import React from 'react';

const TicketList = ({ tickets }) => {
  return (
    <div className="ticket-container">
      <h3>PDF票据列表</h3>
      {Object.entries(tickets).map(([outerId, innerObj]) => (
        <div key={outerId} className="ticket-group">
          <p>分组ID: {outerId}</p>
          {Object.entries(innerObj).map(([innerId, pdfUrl]) => (
            <div key={innerId} className="ticket-item">
              {pdfUrl ? (
                <a href={pdfUrl} target="_blank" rel="noopener noreferrer">
                  查看票据 {innerId}
                </a>
              ) : (
                <span className="empty-ticket">票据 {innerId} 暂无链接</span>
              )}
            </div>
          ))}
        </div>
      ))}
    </div>
  );
};

// 使用示例(假设你的响应数据存在response变量中)
const response = { "response_code": 200, "tickets": { "3": { "117": "http://....../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf" }, "4": { "118": "http://...../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf" }, "5": { "119": "http://...../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf" }, "6": { "120": "http://.../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf" }, "7": { "121": "" }, "8": { "122": "http://..../upload/iblock/4a5/4a529553152b21109e9aa18fa9d4ea9b.pdf" } } };

// 在组件中调用
// <TicketList tickets={response.tickets} />

方法二:先转换为数组再展示

如果觉得嵌套遍历太麻烦,可以先把tickets转换成结构更扁平化的数组,后续展示会更直观:

import React from 'react';

const TicketList = ({ tickets }) => {
  // 将嵌套对象转换为数组
  const ticketArray = Object.entries(tickets).flatMap(([outerId, innerObj]) => {
    return Object.entries(innerObj).map(([innerId, pdfUrl]) => ({
      outerId,
      innerId,
      pdfUrl
    }));
  });

  return (
    <div className="ticket-container">
      <h3>PDF票据列表</h3>
      <ul>
        {ticketArray.map((ticket) => (
          <li key={ticket.innerId}>
            {ticket.pdfUrl ? (
              <a href={ticket.pdfUrl} target="_blank" rel="noopener noreferrer">
                分组{ticket.outerId} - 票据{ticket.innerId}
              </a>
            ) : (
              <span>分组{ticket.outerId} - 票据{ticket.innerId} 暂无链接</span>
            )}
          </li>
        ))}
      </ul>
    </div>
  );
};

// 使用示例同上
// <TicketList tickets={response.tickets} />

两种方法都能完美展示你的PDF链接,第二种数组格式的好处是后续如果需要对票据数据做筛选、排序等操作会更方便~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:07:46