【问题标题】:React Uncaught TypeError: search.map is not a functionReact Uncaught TypeError:search.map 不是函数
【发布时间】:2017-04-15 10:15:38
【问题描述】:

我正在尝试使用维基百科 API。我正在使用 Axios 来请求数据。当我通过从 App 的 state 传递的 prop 去映射时,我收到以下错误:

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;

使用来自 App 的状态数据的组件

class SearchList extends React.Component
{
  render()
  {
    let search = this.props.search;
    search.map((element) => {

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

【问题讨论】:

  • 因为你在App状态中设置的“搜索”转移的道具是“对象”,而不是数组。

标签: javascript reactjs


【解决方案1】:

您需要在组件状态中将search 初始化为空数组变量,而不是对象,这样在调用map 方法时不会抛出错误,如下所示:

this.state = {search: []}

不是这样的:

this.state = {search: {}}

【讨论】:

猜你喜欢
  • 2017-09-11
  • 2017-03-10
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多