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但我还有一个问题[与上面可排序文件的同一目录中的另一个文件相关]。我不想发布新问题,因为它与主要问题类似-缺少关键道具。我在中发布了文件内容,请帮助我!我尝试添加索引参数,但无效!请随意发布任意数量的问题。这些问题可能对其他人也有帮助;这就是此网站的用途。