2016-11-30 40 views
0

我想玩弄维基百科API。我正在使用Axios来提交数据请求。当我去映射通过道具从应用程序的状态穿过,我得到以下错误:React Uncaught TypeError:search.map不是一个函数

Uncaught TypeError: search.map is not a function 

我已经检查了预期值是一个数组。它似乎是,我可以在反应开发工具控制台中操作它。它也有一个Array的原型,所以我很困惑为什么我不能这样做。

根组件:

class App extends React.Component 
{ 
    constructor() 
    { 
    super(); 
    this.state = {search: {}} 
    this.wikiSearch(); 
    } 
    wikiSearch() 
    { 
    axios 
     .get('https://en.wikipedia.org/w/api.php?action=opensearch&search="test"') 
     .then ((result) => { 
     result.data.shift(); 
     this.setState({search: result.data}); 
     }); 
    } 
    render() 
    { 
    return(
    <div id="container"> 
     <Header /> 
     <SearchBar /> 
     <SearchList search={this.state.search} /> 
    </div> 
    ); 
    } 
} 
export default App; 

,从应用

使用状态数据
class SearchList extends React.Component 
{ 
    render() 
    { 
    let search = this.props.search; 
    search.map((element) => { 

    }); 
    return(
     <div id='SearchList'> 
     </div> 
    ); 
    } 
} 
+0

因为您在app状态下设置的“搜索”的属性是“对象”,而不是数组。 –

回答

1

需要初始化search为空数组变量,而不是对象,在组件状态,使得它的成分不要在errow上打电话map这样的方法:

this.state = {search: []} 

不是这样的:

this.state = {search: {}} 
+0

你为什么建议初始化'componentWillMount'内的状态?你能否说明理由?我们在这里有一个讨论http://stackoverflow.com/q/40828004/5069226 –

相关问题