如何解决React Table 7 唯一键警告问题
我正在使用 React Table 7 来构建我的表格,并且表格呈现但我收到警告 Each child in a list should have a unique "key" prop.
我已经在 headerGroup 映射和行中包含了键,但仍然收到警告。错误似乎只指向第 137 行,我确实有一个键
<thead>
{headerGroups.map((headerGroup,i) => (
<tr {...headerGroup.getHeaderGroupProps()} key={headerGroup.id}> ...
和第 176 行:
<tr
key={row.id}
{...row.getRowProps()}
onClick={rowOnClick ? () => rowClickHandler(row.original) : () => ""}
>
我在哪里丢了钥匙?
表格
<React.Fragment>
<Row>
<Col>
<Table striped bordered hover size="sm" responsive {...getTableProps()}>
<thead>
{headerGroups.map((headerGroup,i) => (
<tr {...headerGroup.getHeaderGroupProps()} key={headerGroup.id}>
{headerGroup.headers.map((column) => (
<th
className={`p-2 table-header ${headerColor ? "primary-" + headerColor : "primary-deq"}`}
{...column.getHeaderProps()}
>
<span {...column.getSortByToggleProps()}>
{column.render("Header")}
{column.isSorted ? (
column.isSortedDesc ? (
<FontAwesomeIcon className="ml-3" icon={faArrowDown} />
) : (
<FontAwesomeIcon className="ml-3" icon={faArrowUp} />
)
) : (
""
)}
</span>
<div {...column.getResizerProps()} className="resizer" />
{column.canResize && (
<div
{...column.getResizerProps()}
className={`resizer ${column.isResizing ? "isResizing" : ""}`}
/>
)}
<div>{column.canFilter ? column.render("Filter") : null}</div>
</th>
))}
</tr>
))}
</thead>
<tbody {...getTableBodyProps()}>
{page.map((row,i) => {
prepareRow(row);
return (
<React.Fragment>
<tr
key={row.id}
{...row.getRowProps()}
onClick={rowOnClick ? () => rowClickHandler(row.original) : () => ""}
>
{row.cells.map((cell) => {
return <td {...cell.getCellProps()}>{cell.render("Cell")}</td>;
})}
</tr>
{row.isExpanded ? (
<tr>
<td>
<span className="subTable">{renderRowSubComponent({ row })}</span>
</td>
</tr>
) : null}
</React.Fragment>
);
})}
</tbody>
</Table>
{showPagination ? (
<Row className="mt-2 text-center">
<Col>
<Button
className="mr-2"
size="sm"
variant="secondary"
onClick={() => gotoPage(0)}
disabled={!canPrevIoUsPage}
>
<FontAwesomeIcon icon={faAngleDoubleLeft} />
</Button>
<Button
className="mr-2"
size="sm"
variant="secondary"
onClick={() => prevIoUsPage()}
disabled={!canPrevIoUsPage}
>
<FontAwesomeIcon icon={faAngleLeft} />
</Button>
</Col>
<Col>
<span>
Page{" "}
<strong>
{pageIndex + 1} of {pageOptions.length}
</strong>{" "}
</span>
<span>
| Go to page:{" "}
<InputGroup size="sm" style={{ width: "20%",display: "inline-flex" }}>
<FormControl
type="number"
defaultValue={pageIndex + 1}
onChange={(e) => {
const page = e.target.value ? Number(e.target.value) - 1 : 0;
gotoPage(page);
}}
/>
</InputGroup>
</span>{" "}
<InputGroup size="sm" style={{ width: "30%",display: "inline-flex" }}>
<FormControl
size="sm"
as="select"
value={pageSize}
onChange={(e) => {
setPageSize(Number(e.target.value));
}}
>
{[5,10,20,30,40,50].map((pageSize) => (
<option key={pageSize} value={pageSize}>
Show {pageSize}
</option>
))}
</FormControl>
</InputGroup>
</Col>
<Col>
<Button
className="mr-2"
size="sm"
variant="secondary"
onClick={() => nextPage()}
disabled={!canNextPage}
>
<FontAwesomeIcon icon={faAngleRight} />{" "}
</Button>
<Button
className="mr-2"
size="sm"
variant="secondary"
onClick={() => gotoPage(pageCount - 1)}
disabled={!canNextPage}
>
<FontAwesomeIcon icon={faAngleDoubleRight} />
</Button>
</Col>
</Row>
) : (
""
)}
</Col>
</Row>
</React.Fragment>
错误:
Warning: Each child in a list should have a unique "key" prop.
Check the render method of `DtsReactTable`. See https://reactjs.org/link/warning-keys for more information.
tr
DtsReactTable@http://localhost:3000/static/js/main.chunk.js:11780:23
div
./node_modules/react-bootstrap/esm/Col.js/Col<@http://localhost:3000/static/js/0.chunk.js:36550:18
div
./node_modules/react-bootstrap/esm/Row.js/Row<@http://localhost:3000/static/js/0.chunk.js:40631:18
EnforcementActionsTable@http://localhost:3000/static/js/main.chunk.js:4237:11
div
./node_modules/react-bootstrap/esm/Col.js/Col<@http://localhost:3000/static/js/0.chunk.js:36550:18
div
./node_modules/react-bootstrap/esm/Row.js/Row<@http://localhost:3000/static/js/0.chunk.js:40631:18
IncidentSummaryPage@http://localhost:3000/static/js/main.chunk.js:1056:5
ConnectFunction@http://localhost:3000/static/js/0.chunk.js:75747:75
Route@http://localhost:3000/static/js/0.chunk.js:78589:29
Switch@http://localhost:3000/static/js/0.chunk.js:78791:29
div
div
Router@http://localhost:3000/static/js/0.chunk.js:78224:30
ConnectedRouter@http://localhost:3000/static/js/0.chunk.js:17909:22
ConnectedRouterWithContext@http://localhost:3000/static/js/0.chunk.js:18014:19
ConnectFunction@http://localhost:3000/static/js/0.chunk.js:75747:75
Provider@http://localhost:3000/static/js/0.chunk.js:75460:15
App@http://localhost:3000/static/js/main.chunk.js:176:1
in DtsReactTable (at EnforcementActionsTable.js:149)
in EnforcementActionsTable (at IncidentSummaryPage.js:187)
in IncidentSummaryPage (created by Connect(IncidentSummaryPage))
in Connect(IncidentSummaryPage) (at App.js:98)
in Router.Consumer (created by Route)
in Route (at App.js:95)
in App (at src/index.js:10) index.js:1
e index.js:1
r backend.js:6
React 5
DtsReactTable DtsReactTable.js:136
React 9
unstable_runWithPriority scheduler.development.js:646
React 4
Redux 4
e 1040:1
immutableStateInvariantMiddleware Immutable
createThunkMiddleware Redux
routerMiddleware middleware.js:22
Redux 4
routerMiddleware middleware.js:22
dispatch 1040:1
bindActionCreator Redux
componentDidMount IncidentSummaryPage.js:50
React 6
unstable_runWithPriority scheduler.development.js:646
React 9
js index.js:10
js main.chunk.js:13289
Webpack 7
解决方法
您在此代码中的几个地方没有密钥......例如
{ headerGroup.headers.map((column) => (
<th
className={`p-2 table-header ${headerColor ? "primary-" + headerColor : "primary-deq"}`
{...column.getHeaderProps()}
另一个问题可能是您的密钥不是唯一的。 当您使用 map 时,您可以使用第二个参数,即迭代次数,这将保证您的键是唯一的。例如
{headerGroups.map((headerGroup,i) => ( <tr {...headerGroup.getHeaderGroupProps()} key={i}> ...
// i instead of headerGroup.id is unique
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。