我正在开发一个以表格格式显示数据的反应应用程序。我正在使用 react-table 来格式化数据。我想让其中一个单元格成为项目描述页面的链接。我不希望整行都是“可点击的”。我正在从后端服务器检索数据以填充行。下面是我的反应代码的副本:
import React, { useEffect, useMemo } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useTable } from 'react-table';
import { Table } from 'react-bootstrap';
import { PROJECT_COLUMNS } from '../columns/columns';
import { projectsDetails } from '../actions/projectActions';
import Button from '../components/Button';
const ProjectSummary = () => {
const dispatch = useDispatch();
const projectDetails = useSelector(state => state.projectDetails);
const { loading, error, projects } = projectDetails;
useEffect(() => {
dispatch(projectsDetails());
}, [dispatch]);
const columns = useMemo(() => PROJECT_COLUMNS, []);
const data = useMemo(() => projects, []);
const tableInstance = useTable({
columns,
data
});
const {
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow
} = tableInstance;
console.log(data._id);
return (
<Table
striped
className='table-responsive-sm table-responsive-md'
{...getTableProps()}
>
<thead>
{headerGroups.map(headerGroups => (
<tr {...headerGroups.getHeaderGroupProps()}>
{headerGroups.headers.map(column => (
<th {...column.getHeaderProps()}>{column.render('Header')}</th>
))}
</tr>
))}
</thead>
<tbody {...getTableBodyProps()}>
{rows.map(row => {
prepareRow(row);
return (
<tr {...row.getRowProps()}>
{row.cells.map(cell => {
return <td {...cell.getCellProps()}>{cell.render('Cell')}</td>;
})}
</tr>
);
})}
</tbody>
</Table>
);
};
export default ProjectSummary;
这是它们映射的列。
import Moment from 'react-moment';
import { Link } from 'react-router-dom';
export const PROJECT_COLUMNS = [
{
Header: 'Status',
accessor: 'status'
},
{
Header: 'Name',
accessor: 'name'
},
{
Header: 'Project Id',
accessor: 'projectId'
},
{
Header: 'Start Date',
accessor: 'startDate',
Cell: ({ row }) => <Moment format='MM/DD/YYYY'></Moment>
},
{
Header: 'End Date',
accessor: 'endDate',
Cell: ({ row }) => <Moment format='MM/DD/YYYY'></Moment>
},
{
Header: 'Type',
accessor: 'type'
},
{
Header: 'Location',
accessor: 'state'
}
];