react中的映射函数(错误:TypeError:e.map 不是函数)

IT技术 javascript arrays reactjs object map-function
2021-04-30 23:10:47

我想从props渲染项目,我可以用初始状态来完成,但不能用来自服务器的响应来完成。我的渲染功能:

 const { data } = this.props;
    return (
      <div >
          {data.map((item, index) =>
              <div key={index} className="row">
                  <span data = { data } className="number col-4 col-md-8">{item._id}</span>
                  <span data = { data } className="date col-4 col-md-2">{item.date}</span>
                  <span data = { data }  className="tag col-4 col-md-2">{item.tag}</span>
                  <div className="col-md-12 ">
                    {item.text}
                  </div>                
              </div>
          )}
      </div>
    )
  }

我得到这个错误:

类型错误:e.map 不是函数

response : Object {data: Array(12), status: 200, statusText: "OK", headers: Object, config: Object...}

4个回答

不得不改变父组件改变这个:

  this.setState({
    data: response
  })

  this.setState({
    data: response.data
  })

我试图从子组件获取数据,但它不起作用(可能是因为 map 功能)

看起来您的回复只是原始回复。如果您使用的是 fetch,那么 Promise 链应该是这样的:

fetch(fromMySource).then(resp => resp.json()).then(data => doSomething(data));

看起来您可能正在尝试直接使用 resp ,这会使您的数据数组看起来像您在问题中发布的响应对象。

data当响应未决时,您可以使用默认值在这个时间data没有定义

const { data = [] } = this.props;

或者在 jsx 中使用条件:

render() {
   if (!data || !data.length) return null;
   ...
}

只需将这些词添加到您的 map 函数中,因为您需要检查数组是否存在然后执行 map 函数

const { data } = this.props;
    return (
      <div >
          {data && data.length && data.map((item, index) =>
              <div key={index} className="row">
                  <span data = { data } className="number col-4 col-md-8">{item._id}</span>
                  <span data = { data } className="date col-4 col-md-2">{item.date}</span>
                  <span data = { data }  className="tag col-4 col-md-2">{item.tag}</span>
                  <div className="col-md-12 ">
                    {item.text}
                  </div>                
              </div>
          )}
      </div>
    )
  }