Reactjs onVideoSelect vs onVideoSelected
在我的react应用程序中,组件中有以下代码Reactjs onVideoSelect vs onVideoSelected,reactjs,ecmascript-6,Reactjs,Ecmascript 6,在我的react应用程序中,组件中有以下代码 <VideoList onVideoSelect={(selectedVideo) => this.setState({ selectedVideo })} videos={this.state.videos} /> 上面的代码可以工作,没有问题,但只要我将onVideoSelect更改为onVideoSelected,就会出现一个错误,即onVideoSelected不是一个定义的函数 我的问题是,onV
<VideoList
onVideoSelect={(selectedVideo) => this.setState({ selectedVideo })}
videos={this.state.videos}
/>
上面的代码可以工作,没有问题,但只要我将onVideoSelect更改为onVideoSelected,就会出现一个错误,即onVideoSelected不是一个定义的函数
我的问题是,onVideoSelected是在ReactJS或ES6中定义的函数吗
供参考:
其他代码:
const VideoListItem = ({ video, onVideoSelect }) => {
const imageUrl = video.snippet.thumbnails.default.url;
return (
<li onClick={() => onVideoSelect(video)} className="list-group-item">
<div className='video-list media'>
<div className='media-left'>
<img className='media-object' src={imageUrl} />
</div>
<div className='media-body media-heading'>
<div className='media-heading'>
{video.snippet.title}
</div>
</div>
</div>
</li >)
};
如果要将onVideoSelect更改为onVideoSelected,则需要将as onVideoSelected传递给VideoListItem组件,如
<VideoListItem
onVideoSelected={this.props.onVideoSelect}
key={video.etag}
video={video} />
现在在VideoListItemonVideoSelected将起作用
const VideoListItem = ({ video, onVideoSelected }) => {
const imageUrl = video.snippet.thumbnails.default.url;
return (
<li onClick={() => onVideoSelected(video)} className="list-group-item">
<div className='video-list media'>
<div className='media-left'>
<img className='media-object' src={imageUrl} />
</div>
<div className='media-body media-heading'>
<div className='media-heading'>
{video.snippet.title}
</div>
</div>
</div>
</li >)
}
请记住,当您访问从父级传递的函数时。您需要访问,因为这是您作为道具传递的方式共享相关代码的第一件事。什么是视频列表?它是您的自定义组件还是库?您共享的代码不足以帮助修复。因此,请在视频上共享组件中的相关处理程序和状态代码选择组件视频列表的属性?完全同意@三思而后行,请共享一些相关代码。完成。共享了更多的代码。请注意,在我的整个代码中,即在所有组件中,我都在做onVideoSelected
const VideoListItem = ({ video, onVideoSelected }) => {
const imageUrl = video.snippet.thumbnails.default.url;
return (
<li onClick={() => onVideoSelected(video)} className="list-group-item">
<div className='video-list media'>
<div className='media-left'>
<img className='media-object' src={imageUrl} />
</div>
<div className='media-body media-heading'>
<div className='media-heading'>
{video.snippet.title}
</div>
</div>
</div>
</li >)
}