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

React.js中如何实现点击表格链接后在页面右侧动态展示PDF文件

实现方案

核心逻辑是通过父组件维护选中PDF的状态,点击表格文件时更新状态,再将状态传递给PDF预览组件实现动态切换,具体修改如下:

步骤1:修改父组件 DocumentList 逻辑

新增状态存储当前选中的PDF路径,抽离文档列表数据,将状态更新方法和数据传递给子组件:

import ViewPdf from '../../../components/ViewPdf'
import {Table,Col,Row,Button} from 'reactstrap'
import { useState } from 'react'

// 抽离文档列表数据,pdfPath对应你项目src下的PDF实际存储路径
const DOC_LIST = [
  {
    id: '1-86',
    name: '医疗保险理赔单',
    status: '已签署',
    pdfPath: '/src/pdf/medical-insurance-claim.pdf' // 替换为你实际的文件路径
  },
  {
    id: '0-34',
    name: '家庭保险单',
    status: '已签署',
    pdfPath: '/src/pdf/household-insurance.pdf' // 替换为你实际的文件路径
  },
  {
    id: '2-24',
    name: '车辆保险单',
    status: '未签署',
    pdfPath: '/src/pdf/car-insurance.pdf' // 替换为你实际的文件路径
  }
]

// DocTable组件接收两个props:文档列表、选中PDF的回调方法
const DocTable = ({ docList, onSelectPdf }) => {
  return (
    <>
      <span style={{ fontWeight: 'bold' }}>文档列表</span><br/>
    <Table bordered hover size="sm">
      <thead>
        <br/>
        <tr>
          <th>ID</th>
          <th>文档名称</th>
          <th>状态</th>
        </tr>
      </thead>
      <tbody>
        {/* 遍历数据渲染表格 */}
        {docList.map(item => (
          <tr key={item.id}>
            <th scope="row">{item.id}</th>
            <td>
              <Button 
                color="link"
                onClick={() => onSelectPdf(item.pdfPath)}
              >
                {item.name}
              </Button>
            </td>
            <td>{item.status}</td>
          </tr>
        ))}
      </tbody>
    </Table>
    <br/>
    </>
  );
}

const DocumentList=()=>{
  // 新增状态:存储当前选中的PDF路径,默认可以传第一个或者空
  const [selectedPdf, setSelectedPdf] = useState(DOC_LIST[0].pdfPath)

  return (
    <div>
      <Row>
      <Col xs="6">
        <DocTable 
          docList={DOC_LIST} 
          onSelectPdf={(path) => setSelectedPdf(path)}
        />
      </Col>

      <Col xs="6">
        {/* 将选中的PDF路径传给预览组件 */}
        <ViewPdf pdfPath={selectedPdf}/>
      </Col>
    </Row>
    </div>
  );

}
export default DocumentList

步骤2:修改 ViewPdf 组件接收路径参数

找到你编写的ViewPdf组件,接收pdfPath的props,替换原来硬编码的文件路径即可,示例如下:

// ViewPdf组件示例修改,你只需要替换file属性的取值即可
import { Document, Page } from 'react-pdf';

const ViewPdf = ({ pdfPath }) => {
  // 其他原有逻辑保持不变
  return (
    <Document file={pdfPath}> {/* 这里原来写的固定路径替换成props传过来的pdfPath */}
      <Page pageNumber={1} />
      {/* 其他原有渲染逻辑保持不变 */}
    </Document>
  )
}
export default ViewPdf

修改完成后默认会展示第一个文档的预览内容,点击左侧表格的其他文档链接就会自动切换右侧的预览内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:15:07