开发者问题收集

无法读取 null 的 URL 属性,从 API 中获取

2021-01-09
98

我有 JSON 格式的产品,它们被提取并显示在前端。在我的 products.json 中,每个产品都有一个图片 URL,但只有一些产品有图片 URL,其他产品为空。当我在 React 中循环数据时,我的 React 应用程序中总是出现错误,提示无法读取 <img/> 标签中的 null 属性,我该如何编写一个逻辑,仅在有图片源时才渲染图片,否则只返回一个空的 div?

<ul>
          {this.state.items.map((items, index) => {
            return (
              <li className="ProductList-product" key={items.id}>
                  <h3>{items.title}</h3>
                  <p>{items.description}</p>
                  <div className="price-box">    
                  <p>from: {items.price} $</p>
                  </div>
                  <div>
                  {<img src={items.photo} alt=""/>}
                  {/* {console.log(items.photo.id)} */}
                  </div>
              </li>
                
            );
          })}
        </ul>
2个回答

将您的

{<img src={items.photo} alt=""/>}

替换为

{items.photo && <img src={items.photo} alt=""/>}

仅当 item.photo 不为空时才会呈现 img 元素。

Hemant
2021-01-09

您可以设置条件。例如:

  <ul>
      {this.state.items.map((items, index) => {
        return (
          <li className="ProductList-product" key={items.id}>
              <h3>{items.title}</h3>
              <p>{items.description}</p>
              <div className="price-box">    
              <p>from: {items.price} $</p>
              </div>
              {items.photo
              ? <div>
                  {<img src={items.photo} alt=""/>}
                  {/* {console.log(items.photo.id)} */}
              </div>
              : <div></div>
          </li>
            
        );
      })}
  </ul>
BobVoit
2021-01-09