问题描述
我实际上整夜熬夜,试图弄清楚如何从我的行中获取价值。
const columns = useMemo(
() => [
{
// first group - TV Show
Header: "Shop Chop Chop List",// First group columns
columns: [
{
Header: "User",accessor: "email",},{
Header: "Store",accessor: "store",],{
Header: "Details",columns: [
{
Header: "Item",accessor: "title",{
Header: "Picture",accessor: "picture",Cell: ({ row }) => (
<a
target="_blank"
rel="noopener noreferrer"
href={row.original.picture}
>
{row.original.picture}
</a>
),{
Header: "Aisle",accessor: "aisleLocation",{
Header: "Location",id: 'edit',accessor: 'id',Cell: ({value}) => (
<div>
<button
onClick={()=> {
console.log(value);
}}
className={styles.editBtn}
>
Record Aisle
</button>
</div>
),{
Header: "Remove",id: "delete",accessor: (str) => "delete",Cell: (row)=> (
<button
className={styles.deleteBtn}
onClick={()=> {
const datacopy = [...data];
datacopy.splice(row.index,1);
setData(datacopy);
}}>
Found
</button>
)
}
],[data],);
这是我的最新尝试。我试图从这一行中获取一个值,以便可以在后端分配一个过道位置。我希望使用uniqueID,但也可以使其与title和store一起使用。很难从这一行中获取信息。
这是我的tableContainer
import React,{ Fragment } from 'react';
import {
useTable,useSortBy,useFilters,useExpanded,usePagination,} from 'react-table';
import { Table,Row,Col,Button,Input} from 'reactstrap';
import { Filter,DefaultColumnFilter } from './Filters';
const TableContainer = ({ columns,data,renderRowSubComponent }) => {
const {
getTableProps,getTableBodyProps,headerGroups,page,prepareRow,visibleColumns,canPrevIoUsPage,canNextPage,pageOptions,pageCount,gotoPage,nextPage,prevIoUsPage,state: { pageIndex },} = useTable(
{
columns,defaultColumn: { Filter: DefaultColumnFilter },initialState: { pageIndex: 0,pageSize: 5 },usePagination
);
const generateSortingIndicator = (column) => {
return column.isSorted ? (column.isSortedDesc ? ' ?' : ' ?') : '';
};
const onChangeInInput = (event) => {
const page = event.target.value ? Number(event.target.value) - 1 : 0;
gotoPage(page);
};
return (
<Fragment>
<Table bordered hover {...getTableProps()}>
<thead>
{headerGroups.map((headerGroup) => (
<tr {...headerGroup.getHeaderGroupProps()}>
{headerGroup.headers.map((column) => (
<th {...column.getHeaderProps()}>
<div {...column.getSortByToggleProps()}>
{column.render('Header')}
{generateSortingIndicator(column)}
</div>
<Filter column={column} />
</th>
))}
</tr>
))}
</thead>
<tbody {...getTableBodyProps()}>
{page.map((row) => {
prepareRow(row);
return (
<Fragment key={row.getRowProps().key}>
<tr onClick={()=> handleShow(row.original)}>
{row.cells.map((cell) => {
return (
<td {...cell.getCellProps()}>{cell.render('Cell')}</td>
);
})}
</tr>
{row.isExpanded && (
<tr>
<td colSpan={visibleColumns.length}>
{renderRowSubComponent(row)}
</td>
</tr>
)}
</Fragment>
);
})}
</tbody>
</Table>
请,有人可以帮忙吗?我是新手,所以需要非常具体的说明
请,谢谢
解决方法
react-table
用于显示数据,而不是JSX元素,但是您可以通过两种方式解决此问题,首先,您可以在行数据中传递唯一的id,就像上面在Cell中使用的那样或者您可以仅将JSX元素呈现为行数据并直接使用唯一的ID(例如,您要删除的某些模型ID),但是将JSX元素呈现为数据是一项繁重的任务,因为备注将失败,您将必须提供额外的逻辑以防止重新呈现。