2016-11-30 93 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 –

相關問題