You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React子组件回调经两次传递后未执行问题求助

React-Redux项目:VideoItem点击未触发控制台打印

我正在学习Udemy的React-Redux课程第11节的视频应用项目,按照讲师的实现方式,将App组件中的onVideoSelect回调逐层传递给VideoList、VideoItem组件,点击VideoItem时本应触发控制台打印,但浏览器无输出,已核对代码拼写无误。

相关代码如下:

App.js

import React from 'react';

import youtube from '../apis/youtube';
import SearchBar from './SearchBar';
import VideoList from './VideoList';

class App extends React.Component {

  state = {videos: [], selectedVideo: null};

  onTermSubmit = async term => {
    const response = await youtube.get('/search', {
      params: {
        q: term
      }
    });

    // console.log(response.data.items);

    this.setState({videos: response.data.items});
  };

  onVideoSelect = video => {
    console.log('from the app', video);
  }

  render() {
    return (
      <div className="ui container">
        <SearchBar onFormSubmit={this.onTermSubmit} />
        <VideoList
          onVideoSelect={this.onVideoSelect}
          videos={this.state.videos} />
      </div>
    )
  }
}

export default App;

VideoList.js

import React from 'react';
import VideoItem from './VideoItem';

const VideoList = ({videos, onVideoSelect}) => {
  const rendered_list = videos.map(video => {
    return <VideoItem onVideoSelect={onVideoSelect} video={video} />
  });

  return <div className="ui relaxed divided list">{rendered_list}</div>;
};

export default VideoList;

VideoItem.js

import React from 'react';

import './VideoItem.css';

const VideoItem = ({video, onVideoSelect}) => {
  return (
    <div onClick={() => onVideoSelect(video)} className="item video-item">
      <img
        src={video.snippet.thumbnails.medium.url}
        className="ui image"
      />
      <div className="content">
        <div className="header">{video.snippet.title}</div>
      </div>
    </div>
  );
}

export default VideoItem;

未执行的代码为:

onVideoSelect = video => {
    console.log('from the app', video);
}

内容的提问来源于stack exchange,提问作者codyc4321

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 14:39:24