Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 映射警告时响应唯一键_Node.js_Reactjs_Key_Mapping_Ejs - Fatal编程技术网

Node.js 映射警告时响应唯一键

Node.js 映射警告时响应唯一键,node.js,reactjs,key,mapping,ejs,Node.js,Reactjs,Key,Mapping,Ejs,我还没有反应过来,我面临着一个无法解决的问题。以下是我的react组件: import React from 'react'; import Header from './Header'; import ContestPreview from './ContestPreview'; class App extends React.Component { state = { pageHeader: 'Naming Contests', whatever

我还没有反应过来,我面临着一个无法解决的问题。以下是我的react组件:

import React from 'react';
import Header from './Header';
import ContestPreview from './ContestPreview';

class App extends React.Component {

    state = { 
        pageHeader: 'Naming Contests',
        whatever: 'test'
    };

    render() {
        return (
            <div className="App">
                <Header message={this.state.pageHeader} />
                <div>
                    {this.props.contests.map(contest =>
                        <ContestPreview key={contest.id} {...contest} />
                    )}
                </div>
            </div>
        );
    }
}

export default App;
在我看来,它应该是有效的,我不明白为什么我仍然得到这个错误。我真的很想在我的问题上得到一些帮助,如果有人能告诉我这里发生了什么,那将是非常酷的,因为我真的试图理解它是如何工作的

谢谢你的帮助!:)

在您的代码中

<div className="App">
   <Header message={this.state.pageHeader} />
    <div>
        {this.props.contests.map(contest => {
            console.log('contest id =', contest.id);
            return (<ContestPreview key={contest.id} {...contest} />);
        })}
    </div>
</div>

{this.props.contestics.map(contest=>{
console.log('contest id=',contest.id);
返回();
})}
这将控制要在地图中渲染的每个组件的id(键)。我认为由于某种原因,在对象数组中有一个具有相同键的对象

当您看到console.log()结果时,使用这种方法。您将知道对象中哪里有错误

我希望这能帮助您调试错误。

在您的代码中

<div className="App">
   <Header message={this.state.pageHeader} />
    <div>
        {this.props.contests.map(contest => {
            console.log('contest id =', contest.id);
            return (<ContestPreview key={contest.id} {...contest} />);
        })}
    </div>
</div>

{this.props.contestics.map(contest=>{
console.log('contest id=',contest.id);
返回();
})}
这将控制要在地图中渲染的每个组件的id(键)。我认为由于某种原因,在对象数组中有一个具有相同键的对象

当您看到console.log()结果时,使用这种方法。您将知道对象中哪里有错误


我希望这能帮助您调试错误。

将包装器放入每个对象属性的呈现中

<div>
    {this.props.contests.map(contest =>
        <div key={contest.id}>
             <ContestPreview {...contest} />
        </div>
    )}
</div>

{this.props.contestics.map(contest=>
)}

将包装器放入每个对象属性的呈现中

<div>
    {this.props.contests.map(contest =>
        <div key={contest.id}>
             <ContestPreview {...contest} />
        </div>
    )}
</div>

{this.props.contestics.map(contest=>
)}

我可以想出两种解决方法

第一种方法是将密钥添加到周围的div中,而不是直接添加到
ContestPreview
元素中

<div>
  {this.props.contests.map(contest =>
    <div key={contest.id}><ContestPreview {...contest} /></div>
  )}
</div>

我可以想出两个解决办法

第一种方法是将密钥添加到周围的div中,而不是直接添加到
ContestPreview
元素中

<div>
  {this.props.contests.map(contest =>
    <div key={contest.id}><ContestPreview {...contest} /></div>
  )}
</div>

你能检查一下数据在任何时间点是否变得未定义或为空吗?有任何答案可以帮助你解决问题吗?@spencer.sm没有,但我自己解决了。我重新启动了整个服务器,还是一样。所以我有点生气,决定关掉电脑一个小时。重启后,它工作得非常好。不知道是什么,认为有些东西没有正确地处理。你能检查一下数据在任何时候是否变得未定义或为空吗?有任何答案可以帮助你解决问题吗?@spencer.sm没有,但我自己解决了。我重新启动了整个服务器,还是一样。所以我有点生气,决定关掉电脑一个小时。重启后,它工作得非常好。不知道那是什么,我觉得有些东西没做对。