Javascript React-prop未定义
我目前正在学习使用React构建应用程序(还没有使用Redux)。到目前为止,除了加载数据(通过ajax)外,一切都正常工作。让我精炼一下我的意思 我使用的是spotify API库“spotify web API js” 到目前为止,我有两个组件:Javascript React-prop未定义,javascript,reactjs,Javascript,Reactjs,我目前正在学习使用React构建应用程序(还没有使用Redux)。到目前为止,除了加载数据(通过ajax)外,一切都正常工作。让我精炼一下我的意思 我使用的是spotify API库“spotify web API js” 到目前为止,我有两个组件: 搜索字段 显示艺术家列表 当然,一切都是在应用程序层面上进行的 应用程序级别 类应用程序扩展组件{ 建造师(道具){ 超级(道具); 此.state={ 艺术家:[] } 这是“搜索艺术家”(“克里斯”); } 搜索艺术家(艺术家){ api.s
类应用程序扩展组件{
建造师(道具){
超级(道具);
此.state={
艺术家:[]
}
这是“搜索艺术家”(“克里斯”);
}
搜索艺术家(艺术家){
api.searchArtists(艺术家,(错误,数据)=>{
if(err){console.log(err);};
this.setState({artists:data},()=>{
console.log(this.state.artists);
});
});
}
render(){
const-artistSearch=(artist)=>{this.searchArtists(artist);};
返回(
);
}
};代码>看起来您最初将艺术家状态定义为数组:
constructor(props) {
super(props);
this.state = {
artists: []
}
this.searchArtists('Chris');
}
您最终将其设置为return函数中返回的数据。但是,当您引用艺术家数据作为道具传入时,看起来您正在尝试访问artists
对象上的artists
值:
<SearchResult artists={ this.state.artists.artists } />
也许就把最后一个.artists
?你确定在传递道具时要写两次artists
<代码>这个.state.artists.artists
@Tholle是的,这是我的问题。为了删除第二个“艺术家”,我应该删除数组初始化。API中的数据是什么样子的?当请求完成时,您是否尝试将artists
设置为data.artists
,而不是data
?是的,我尝试了,而不是console.log(this.state.artists)
,我可以通过console.log(data)
访问它。我可以将它添加到我的答案中-如果您愿意,数据的外观如何。您确定数据中有一个名为美工人员
的对象吗?是的,我知道这将删除数组初始化。但这是否解释了数据返回未定义的原因?我的意思是,我们仍然可以访问这些信息。因为您拥有的数据位于this.state.artists
。但是this.state.artists
中的对象也有artists
属性,这可能不是真的。尝试转动this.state.artists.artists
=>this.state.artists