Javascript 独特的;“关键”;渲染方法中的道具警告-ReactJS
我的应用程序有一个警告:Javascript 独特的;“关键”;渲染方法中的道具警告-ReactJS,javascript,reactjs,key,Javascript,Reactjs,Key,我的应用程序有一个警告:数组或迭代器中的每个子元素都应该有一个唯一的“key”属性。检查“SortableTable”的渲染方法。Hear是我的可排序文件: import React from 'react'; import {Link} from 'react-router'; import {v4 as uuid} from 'node-uuid'; export default class SortableTable extends React.Component { rende
数组或迭代器中的每个子元素都应该有一个唯一的“key”属性。检查“SortableTable”的渲染方法。
Hear是我的可排序文件:
import React from 'react';
import {Link} from 'react-router';
import {v4 as uuid} from 'node-uuid';
export default class SortableTable extends React.Component {
render() {
return (
<table style={{width: '100%'}} className={this.props.className} id={this.props.id}>
<thead>
<tr>
{this.props.headers.map(this.generateHeaders)}
</tr>
</thead>
<tbody>
{this.props.children}
</tbody>
</table>
);
}
generateHeaders = (value) => {
if (Object.keys(value).length === 0) return
let sort, colspan
if(value.sort) {
let {query} = this.props;
let nQuery, title, icon, colspan = 1;
if(query.sort === value.sort && query.sortDirection === 'desc') {
nQuery = Object.assign({}, query, {sort: value.sort, sortDirection: 'asc', page: 1})
title = 'asc';
icon = String.fromCharCode(0xe630)
} else {
nQuery = Object.assign({}, query, {sort: value.sort, sortDirection: 'desc', page: 1})
title = 'desc';
icon = String.fromCharCode(0xe62d)
}
sort = <Link to={this.props.link} query={nQuery} className="icon order active" title={title} data-icon={icon} />
}
let className = value.className ? value.className : ''
if(value.colspan) {
colspan = value.colspan
}
return <th className={className} colSpan={colspan}><span>{value.name}</span>{sort}</th>
}
从“React”导入React;
从“反应路由器”导入{Link};
从“节点uuid”导入{v4 as uuid};
导出默认类SortableTable扩展React.Component{
render(){
返回(
{this.props.headers.map(this.generateHeaders)}
{this.props.children}
);
}
generateHeaders=(值)=>{
if(Object.keys(value).length==0)返回
让我们来排序吧,科尔斯潘
if(value.sort){
设{query}=this.props;
设nQuery,title,icon,colspan=1;
if(query.sort===value.sort&&query.sortDirection==='desc'){
nQuery=Object.assign({},query,{sort:value.sort,sortDirection:'asc',page:1})
标题='asc';
icon=String.fromCharCode(0xe630)
}否则{
nQuery=Object.assign({},query,{sort:value.sort,sortDirection:'desc',page:1})
标题='desc';
icon=String.fromCharCode(0xe62d)
}
排序=
}
让className=value.className?value.className:“”
if(value.colspan){
colspan=value.colspan
}
返回{value.name}{sort}
}
有人能告诉我如何设置key-prop来解决此警告吗?方法是使用具有唯一值的key属性。您可以使用:
generateHeaders=(值、索引)=>{
// ...
返回{value.name}{sort}
}
或者,如果
value
对象有一个唯一的属性,如id
,则可以使用它。方法是使用一个具有唯一值的键属性。您可以使用:
generateHeaders=(值、索引)=>{
// ...
返回{value.name}{sort}
}
或者,如果
value
对象具有唯一的属性,如id
,则可以使用它。您应该将密钥插入到标签中:
generateHeaders=(值、索引)=>{
...
返回{value.name}{sort}
}
您应该将钥匙插入标签:
generateHeaders=(值、索引)=>{
...
返回{value.name}{sort}
}
由生成头返回的
元素需要在其上设置键
属性,因为您要从呈现方法返回它们的数组
实现这一点的最简单方法是使用索引:
generateHeaders = (value, index) => {
// ...
return <th key={index} //...
generateHeaders=(值、索引)=>{
// ...
returngenerateHeaders
返回的
元素需要设置键
属性,因为您要从渲染
方法返回它们的数组
实现这一点的最简单方法是使用索引:
generateHeaders = (value, index) => {
// ...
return <th key={index} //...
generateHeaders=(值、索引)=>{
// ...
return我尝试将与对象
或值
相关的任何内容设置为td
标记中的键,但无效。我尝试了您的设置,似乎没有问题!您应该只设置唯一的键
。如果尝试设置重复键,您的下一个重复组件将消失我尝试设置与对象相关的任何内容de>或value
作为td
标记中的键,但它不起作用。我试过你的,它似乎没问题!你应该只设置唯一的key
。如果你尝试设置重复键,你的下一个重复组件将消失到@Pavlo、Tom Fenech和Oleg Kutsenko(为什么我不能标记所有名称),我的问题解决了!:)为了让这个问题对未来的访问者更有帮助,请接受你最喜欢的答案(每个答案的左边都有一个勾号)。你也会因此赢得一些声誉。这里所有的答案都是正确的。:D但我还有一个问题[与上述可排序文件的同一目录中的另一个文件相关]。我不想发布新问题,因为它与主要问题类似-缺少关键道具。我在中发布了文件内容,请帮助我!我尝试添加索引参数,但无效!请随意发布任意数量的问题。这些问题可能对其他人也有帮助;这就是此网站的用途。感谢@Pavlo,tom Fenech和Oleg Kutsenko(为什么我不能标记所有的名字),我的问题解决了!:)为了让这个问题对未来的访客更有帮助,请接受你最喜欢的答案(每个答案的左边都有一个勾号)。你也会因此赢得一些声誉。这里的所有答案都是正确的。:D但我还有一个问题[与上面可排序文件的同一目录中的另一个文件相关]。我不想发布新问题,因为它与主要问题类似-缺少关键道具。我在中发布了文件内容,请帮助我!我尝试添加索引参数,但无效!请随意发布任意数量的问题。这些问题可能对其他人也有帮助;这就是此网站的用途。