警告:数组或迭代器中的每个孩子都应该有一个唯一的“key”道具。检查`MovieResults`的渲染方法

Posted

技术标签:

【中文标题】警告:数组或迭代器中的每个孩子都应该有一个唯一的“key”道具。检查`MovieResults`的渲染方法【英文标题】:Warning: Each child in an array or iterator should have a unique "key" prop. Check the render method of `MovieResults` 【发布时间】:2016-12-07 19:59:49 【问题描述】:

我无法将 Move.js 页面转到 Details.js 页面

我不明白我为什么会有这样的回应:警告:数组或迭代器中的每个孩子都应该有一个唯一的“关键”道具。查看MovieResults的渲染方法

电影.js:

var Movie = React.createClass(
    render: function()
        var link = 'http://www.imdb.com/title/' + this.props.movie.imdbID;
        var myLink = 'search/' + this.props.movie.imdbID;

        return(
            <div className="well">
                <div className="row">
                    <h4 className="text-center">
                        <Link to=myLink activeClassName="current">this.props.movie.Title</Link>
                    </h4>
                </div>


            </div>    
        )
    ,
);

Details.js:

var Details = React.createClass(
    render: function()

        var link = 'http://www.imdb.com/title/' + this.props.movie.imdbID;

        var title = this.props.movie.Title;
        var year = this.props.movie.Year;
        var type = this.props.movie.Type;
        var poster = this.props.movie.Poster;
        var imdbID = this.props.movie.imdbID;

        return(
            <div className="well">
                <div className="row">
                    <div className="col-md-4">
                        <img className="thumbnail" src=poster /> 
                    </div>
                    <div className="col-md-8">
                        <h4><a href=this.props.movie.Title> title</a></h4>
                        <ul className="padding">
                            <li className="list-group-item">Type : type</li>
                            <li className="list-group-item">Year Released : year</li>
                            <li className="list-group-item">Id imdb : imdbID</li>
                        </ul>
                        <a className="btn btn-primary" href=link>View on IMDB</a>
                    </div>
                </div>
                <Movie movie=this.props.Details key=i />
            </div>    
        )
    ,
);

【问题讨论】:

您能显示MovieResults 组件吗? 【参考方案1】:

DOCS

应始终将密钥直接提供给 数组,而不是数组中每个组件的容器 html 子项

所以...将 key 属性添加到第一个孩子 &lt;div&gt;

var MovieResults = React.createClass(
  render: function()
    return(
      <div>
        <h3 className="text-center"> Results </h3>
        
          this.props.movies.map(function(movie, i)
            return(
              <div key=i>
                <Movie movie=movie/>
              </div>
            )
          )
        
      </div>    
    )
  
)

【讨论】:

以上是关于警告:数组或迭代器中的每个孩子都应该有一个唯一的“key”道具。检查`MovieResults`的渲染方法的主要内容,如果未能解决你的问题,请参考以下文章

警告:数组或迭代器中的每个孩子都应该有一个唯一的“key”道具。检查`Units`的渲染方法

警告:数组或迭代器中的每个孩子都应该有一个唯一的“key”道具。检查`MovieResults`的渲染方法

反应警告:数组或迭代器中的每个孩子都应该有一个唯一的“key”道具。检查`App`的渲染方法

数组或迭代器中的每个孩子都应该有一个唯一的“key”道具。检查 `Abstractfactory` 的渲染方法

正在渲染对象数组的数组,不断收到“警告:列表中的每个孩子都应该有一个唯一的“关键”道具。”

Ionic + React.js:警告:列表中的每个孩子都应该有一个唯一的“关键”道具