【问题标题】:How to display API data using axios with React? [duplicate]如何使用带有 React 的 axios 显示 API 数据? [复制]
【发布时间】:2018-09-03 19:57:46
【问题描述】:

我有以下代码在分配给const 的对象列表上完美运行。但每当我从 DRF API 端点获取对象列表时,我可以console.log 对象,但无法将来自对象的信息显示到站点。这是我使用的代码。

    const comps = []
    axios.get('http://127.0.0.1:8000/')
      .then(response => {
        const items = response.data;
        items.forEach((item) => {
          console.log(item)
          comps.push(<Item
                        id={item.id}
                        name={item.name}
                        inCart={this.state.cart[item.id]}
                        quantity={item.quantity}
                        unit={item.unit}
                        price={item.price}
                        handleDecreaseClick={handleDecreaseClick(item.id, item.price)}
                        handleIncreaseClick={handleIncreaseClick(item.id, item.price)}
                        key={item.id} />)
        })
      })
      .catch(function(error) {
        console.log(error);
      });

我知道循环运行良好,因为我可以在浏览器控制台中记录对象。

但网站中没有显示任何内容。可能是什么问题?

【问题讨论】:

  • 你是怎么渲染的

标签: javascript reactjs ecmascript-6 django-rest-framework axios


【解决方案1】:

如果您在 render() 函数中执行此操作,请将异步请求部分移至 componentDidMount()

componentDidMount() {

  axios.get('http://127.0.0.1:8000/')
    .then((response) => {
      this.setState({items: response.data});
}

render() {
  return (
    <div>
      { this.state.items.map((item) => (
        <Item
          id={item.id}
          name={item.name}
          inCart={this.state.cart[item.id]}
          quantity={item.quantity}
          unit={item.unit}
          price={item.price}
          handleDecreaseClick={handleDecreaseClick(item.id, item.price)}
          handleIncreaseClick={handleIncreaseClick(item.id, item.price)}
          key={item.id}
        />
      )) }
    </div>
  );
}

【讨论】:

  • 没有理由回答这个问题。它应该被标记为重复。这个确切的问题已经回答了 100 次。
猜你喜欢
  • 2019-09-15
  • 2018-05-22
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-20
  • 2020-09-10
相关资源
最近更新 更多