我遇到以下错误:
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]
});
答案 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