React JS中的未定义对象

时间:2018-06-23 14:55:47

标签: reactjs ecmascript-6

我遇到以下错误:

Uncaught ReferenceError: videos2 is not defined

在此应用中:

class App extends Component {
constructor(props) {
    super(props)

    this.state = {
        videos2:[],
        selectedVideo:null
    }

    this.DMSearch()
}

    DMSearch(){
        fetch("https://api.dailymotion.com/videos?fields=description,id,thumbnail_url,title,&limit=5&search=cars")
        .then(response => response.json())
        .then(data=>this.setState({
            videos2:data.videos2, 
            selectedVideo:videos2[0]}))
        console.log(videos2)
    }
    render () {
        const {videos2}=this.state
        return (
            <div>
                <SearchBar onSearchTermChange= {DMSearch}/>
                <VideoDetail video={this.state.selectedVideo}/> 
                <VideoList 
                onVideoSelect={selectedVideo=>this.setState({selectedVideo})}
                videos2={this.state.videos2}/>
            </div>
        )
    }
}  

因此,我想知道应该在哪里定义video2,而不是在已经定义的位置。任何人都可以指出可能导致错误的组件部分吗?

编辑:实际上,它与api json的生成方式有关。 这是从json获取列表的正确方法:

this.setState({
               videos2: videos2.list, 
               selectedVideo: videos2[0]
            });

2 个答案:

答案 0 :(得分:0)

DMSearch函数中,没有定义videos2变量。您可能想要:

.then(data => {
    this.setState({
       videos2: data.videos2, 
       selectedVideo: data.videos2[0]
    });
    console.log(data.videos2);
 });        

.then(data => {
    const { videos2 } = data;
    this.setState({
       videos2,
       selectedVideo:videos2[0]
    });
    console.log(videos2);
 });  

答案 1 :(得分:0)

在DMSearch中,authenticated未定义。

videos2