无法弄清楚密钥和道具的问题
Cannot figure out the problem with key and props
我需要帮助来弄清楚为什么我在使用函数组件时没有收到此类警告:
index.js:1446 Warning: Each child in an array or iterator should have a unique "key" prop.
当我使用 class 组件时,弹出此警告。
提前感谢您的澄清。
功能组件:
import React from 'react';
import VideoItem from './VideoItem';
const VideoList = ({videos, selectedVideo}) =>{
const renderedItems = videos.map((video) =>{
return <VideoItem key={video.id.videoId} video={video} selectedVideo={selectedVideo}/>
})
return <div>{renderedItems}</div>
}
export default VideoList;
class 分量:
import React, { Component } from 'react';
import VideoItem from './VideoItem';
class VideoList extends Component {
render() {
const renderedItems = this.props.videos.map((video) => {
return <div><VideoItem key={video.id.videoId} video={video} selectedVideo={this.props.selectedVideo}/></div>
})
return(
<div>{renderedItems}</div>
)
}
}
export default VideoList;
也许您的 ID 并不总是唯一的?
试试这个(在映射 fn 中添加 idx)
const renderedItems = this.props.videos.map((video, idx) => {
return <div><VideoItem key={idx} video={video}
selectedVideo={this.props.selectedVideo}/></div>
})
const renderedItems = this.props.videos.map((video) => {
return <VideoItem key={video.id.videoId} video={video} selectedVideo={this.props.selectedVideo}/>
})
密钥必须在 Div 上或将其删除
在您的 class 组件中,key
属性需要位于包装器 div
元素上。
在React中,在一次迭代中,每次迭代root元素应该有一个key属性。
在您的示例中,您将 key 属性赋予了 VideoItem 组件。这就是包装纸 div 谁应该拥有它。
import React, { Component } from 'react';
import VideoItem from './VideoItem';
class VideoList extends Component {
render() {
const renderedItems = this.props.videos.map((video) => {
return <div key={video.id.videoId}><VideoItem video={video} selectedVideo={this.props.selectedVideo}/></div>
})
return(
<div>{renderedItems}</div>
)
}
}
export default VideoList;
我需要帮助来弄清楚为什么我在使用函数组件时没有收到此类警告:
index.js:1446 Warning: Each child in an array or iterator should have a unique "key" prop.
当我使用 class 组件时,弹出此警告。
提前感谢您的澄清。
功能组件:
import React from 'react';
import VideoItem from './VideoItem';
const VideoList = ({videos, selectedVideo}) =>{
const renderedItems = videos.map((video) =>{
return <VideoItem key={video.id.videoId} video={video} selectedVideo={selectedVideo}/>
})
return <div>{renderedItems}</div>
}
export default VideoList;
class 分量:
import React, { Component } from 'react';
import VideoItem from './VideoItem';
class VideoList extends Component {
render() {
const renderedItems = this.props.videos.map((video) => {
return <div><VideoItem key={video.id.videoId} video={video} selectedVideo={this.props.selectedVideo}/></div>
})
return(
<div>{renderedItems}</div>
)
}
}
export default VideoList;
也许您的 ID 并不总是唯一的?
试试这个(在映射 fn 中添加 idx)
const renderedItems = this.props.videos.map((video, idx) => {
return <div><VideoItem key={idx} video={video}
selectedVideo={this.props.selectedVideo}/></div>
})
const renderedItems = this.props.videos.map((video) => {
return <VideoItem key={video.id.videoId} video={video} selectedVideo={this.props.selectedVideo}/>
})
密钥必须在 Div 上或将其删除
在您的 class 组件中,key
属性需要位于包装器 div
元素上。
在React中,在一次迭代中,每次迭代root元素应该有一个key属性。
在您的示例中,您将 key 属性赋予了 VideoItem 组件。这就是包装纸 div 谁应该拥有它。
import React, { Component } from 'react';
import VideoItem from './VideoItem';
class VideoList extends Component {
render() {
const renderedItems = this.props.videos.map((video) => {
return <div key={video.id.videoId}><VideoItem video={video} selectedVideo={this.props.selectedVideo}/></div>
})
return(
<div>{renderedItems}</div>
)
}
}
export default VideoList;