задача сделать загрузку данных в компоненте асинхронно

class Table extends Component {
    constructor(props) {
      super(props);
      this.state = {
        droplets: [],
        allSelected: false
      }
      this.toggleSelectAll = this.toggleSelectAll.bind(this);
      this.toggleSelect = this.toggleSelect.bind(this);
    }
    componentDidMount() {
      fetch('http://api.npoint.io/324f4ca2cdd639760638')
      .then(res => res.json())
      .then(droplets => this.setState({ 'droplets': droplets }))
    }
    toggleSelect(dropletToToggle) {
      this.setState((prevState) => {
        const newDroplets = prevState.droplets.map((dplt) => {
          if (dplt === dropletToToggle) {
            return { ...dplt, checked: !dplt.checked };
          }
          return dplt;
        });
  
        return {
          ...prevState,
          droplets: newDroplets,
          allSelected: newDroplets.every((d) => !!d.checked)
        };
      });
    }
  
    toggleSelectAll() {
      this.setState((prevState) => {
        const toggle = !prevState.allSelected;
        const newDroplets = prevState.droplets.map((x) => ({
          ...x,
          checked: toggle
        }));
  
        return {
          ...prevState,
          droplets: newDroplets,
          allSelected: toggle
        };
      });
    }
    render() {
      return (
        <div className="body">
          <div className="title">Таблица пользователей</div>
          <table className="panel">
            <Tablehead
              toggleSelectAll={this.toggleSelectAll}
              allSelected={this.state.allSelected}
            />
            <tbody className="row">
              <TableBody
                droplets={this.state.droplets}
                toggleSelect={this.toggleSelect}
              />
            </tbody>
          </table>
          <button className="button">Удалить выбранные</button>
        </div>
      );
    }
  }
  
  export default Table;

я пробую менять этот кусок кода:

componentDidMount() {
      fetch('http://api.npoint.io/324f4ca2cdd639760638')
      .then(res => res.json())
      .then(droplets => this.setState({ 'droplets': droplets }))
    }

на это

async componentDidMount() {
     const res = await fetch('http://api.npoint.io/324f4ca2cdd639760638')
           res.json()
          .then(droplets => this.setState({ 'droplets': droplets }))
        }

но не знаю как убрать второй then. В правильном ли я вообще направлении двигаюсь или для асинхронной загрузки этого недостаточно ? https://codesandbox.io/s/keen-babbage-cwkjr?file=/src/Table.jsx


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