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

如何将PrimeReact DataTable的行数据(rowData)传递至跳转后的页面

在React+PrimeReact中传递DataTable行数据到跳转页面的解决方案

下面提供三种实用方案,帮你把DataTable当前行的rowData传递到/PerfilLink页面:

方案1:通过URL参数传递(推荐,支持页面刷新)

这种方式把行数据的唯一标识(比如id)拼到URL中,目标页面通过该标识从数据源获取完整数据,刷新页面后数据不会丢失。

修改actionBodyTemplate:

const actionBodyTemplate = (rowData) => {
  return (
    <Link to={`/PerfilLink/${rowData.id}`}>
      <Button
        icon="pi pi-arrow-right"
        className="p-button-rounded p-button-info p-mr-2"
      ></Button>
    </Link>
  );
};

目标页面/PerfilLink获取数据:

import { useParams } from 'react-router-dom';

const PerfilLink = () => {
  const { id } = useParams();
  // 从你的数据源中匹配对应ID的车辆数据
  const targetBus = mixMantenimiento.find(item => item.id === id);

  return (
    <div>
      <h2>{targetBus?.bus_name}</h2>
      <p>ID: {targetBus?.id}</p>
      <p>Estado Carga: {targetBus?.soc}</p>
      {/* 其他数据渲染 */}
    </div>
  );
};

方案2:通过React Router的state传递完整数据

直接把整行数据放到路由的state中传递,无需再次查询数据源,但页面刷新后state会丢失,适合临时场景。

修改actionBodyTemplate:

const actionBodyTemplate = (rowData) => {
  return (
    <Link to={{
      pathname: '/PerfilLink',
      state: { busData: rowData }
    }}>
      <Button
        icon="pi pi-arrow-right"
        className="p-button-rounded p-button-info p-mr-2"
      ></Button>
    </Link>
  );
};

目标页面/PerfilLink获取数据:

import { useLocation } from 'react-router-dom';

const PerfilLink = () => {
  const location = useLocation();
  const busData = location.state?.busData;

  if (!busData) {
    return <div>No se encontraron datos del bus</div>;
  }

  return (
    <div>
      <h2>{busData.bus_name}</h2>
      <p>Kilometraje: {busData.odometer}</p>
      {/* 其他数据渲染 */}
    </div>
  );
};

方案3:利用表格的选中状态传递数据

你已经启用了表格的单选模式,可以结合选中状态来传递数据,确保跳转时使用已选中的行数据。

修改actionBodyTemplate:

const actionBodyTemplate = (rowData) => {
  // 点击按钮时先选中当前行
  const handleButtonClick = () => {
    setSelectedBus(rowData);
  };

  return (
    <Link 
      to={{
        pathname: '/PerfilLink',
        state: { busData: selectedBus }
      }}
      onClick={handleButtonClick}
    >
      <Button
        icon="pi pi-arrow-right"
        className="p-button-rounded p-button-info p-mr-2"
      ></Button>
    </Link>
  );
};

目标页面获取数据同方案2(使用useLocation)

这种方式适合需要依赖选中状态做其他操作的场景,比如批量处理等。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:45:03