Не хочет выводить элементы fetch API

import  React, { Component } from 'react';


import 'bootstrap/dist/css/bootstrap.min.css';
import './Home.css';
import {Button,Card} from 'react-bootstrap';

 
 export  class ListProduct extends Component{
   constructor(props) {
     super(props);
     this.state = {
       error:null,
       isLoaded:false,
       items:[]
     };
    }

    componentDidMount (){
      fetch("www.themealdb.com/api/json/v1/1/search.php?s=Arrabiata ")
      
      .then(res=>res.json())
      .then(
        (result) =>{
          this.setState({
            isLoaded:true,
            items:result.meals
          });
        },
        (error) =>{
          this.setState({
            isLoaded:true,
            error
          })
        }
      )
      
      
     
    
    }
     
    render() {
      const {error,isLoaded,items} = this.state;
      if(error){
        return<p>Error {error.massage}</p>
      }else if(!isLoaded){
        return<p>Loading...</p>
      }else{
        return(
          <ul>
        {items.map(item=>(
              <li key={item.name}>
                {item.idMeal}
              </li>
            ))}
          </ul>
      )
    }
   }
  }

Ответы (2 шт):

Автор решения: Konstantin Modin

Ошибка в данной строке:

fetch("www.themealdb.com/api/json/v1/1/search.php?s=Arrabiata ")

Должно быть:

fetch("https://www.themealdb.com/api/json/v1/1/search.php?s=Arrabiata")

Рабочий код:

class ListProduct extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      error: null,
      isLoaded: false,
      items: [],
    };
  }

  componentDidMount() {
    fetch("https://www.themealdb.com/api/json/v1/1/search.php?s=Arrabiata")
      .then((res) => res.json())
      .then(
        (result) => {
          this.setState({
            isLoaded: true,
            items: result.meals,
          });
        },
        (error) => {
          this.setState({
            isLoaded: true,
            error,
          });
        }
      );
  }

  render() {
    const { error, isLoaded, items } = this.state;
    console.log(`items`, items);
    if (error) {
      return <p>Error {error.massage}</p>;
    } else if (!isLoaded) {
      return <p>Loading...</p>;
    } else {
      return (
        <ul>
          {items.map((item) => (
            <li key={item.name}>{item.idMeal}</li>
          ))}
        </ul>
      );
    }
  }
}

// export default ListProduct;

ReactDOM.render(<ListProduct />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.1/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.1/umd/react-dom.production.min.js"></script>
<div id="root"></div>

→ Ссылка
Автор решения: Sanya H

Или делайте экспорт по дефолту:

 export default class ListProduct extends Component{

Или импортируйте конкретный компонент

import {ListProduct} from "./components/ListProduct";
→ Ссылка