Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React-prop未定义_Javascript_Reactjs - Fatal编程技术网

Javascript React-prop未定义

Javascript React-prop未定义,javascript,reactjs,Javascript,Reactjs,我目前正在学习使用React构建应用程序(还没有使用Redux)。到目前为止,除了加载数据(通过ajax)外,一切都正常工作。让我精炼一下我的意思 我使用的是spotify API库“spotify web API js” 到目前为止,我有两个组件: 搜索字段 显示艺术家列表 当然,一切都是在应用程序层面上进行的 应用程序级别 类应用程序扩展组件{ 建造师(道具){ 超级(道具); 此.state={ 艺术家:[] } 这是“搜索艺术家”(“克里斯”); } 搜索艺术家(艺术家){ api.s

我目前正在学习使用React构建应用程序(还没有使用Redux)。到目前为止,除了加载数据(通过ajax)外,一切都正常工作。让我精炼一下我的意思

我使用的是spotify API库“spotify web API js”

到目前为止,我有两个组件:

  • 搜索字段
  • 显示艺术家列表
  • 当然,一切都是在应用程序层面上进行的

  • 应用程序级别
  • 类应用程序扩展组件{
    建造师(道具){
    超级(道具);
    此.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