Почему сценарии реагируют так медленно

#javascript #reactjs #performance #optimization

Вопрос:

у меня проблема при извлечении данных при первой выборке, при второй обновленной выборке все происходит нормально, как и должно быть, при второй обновленной выборке все также происходит нормально, но при третьей обновленной выборке она зависает и занимает много времени для написания сценария и отображения данных. я понятия не имею, что происходит, может ли кто-нибудь помочь мне в этом вопросе?

весь мой сценарий вместе

 import React from "react";
import columns from "./TableColumns";
import MaterialTable from "material-table";
import "./saleTotal.css";


export default class TableComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      data: "",
      unique: {},
      selectedRow: "",
      startDate: "2020-09-20",
      endDate: "2020-09-21",
    };
    this.changeDate = this.changeDate.bind(this)
  }

 //start function on DOMContentLoad
 componentDidMount() {
  this.fetchData(this.state.startDate, this.state.endDate);
}

  //fetch data for table
  async fetchData(start, end) {
    try {

      const URL = "http://192.168.48.11:8000/api/api.php";
      var myHeaders = new Headers();
      myHeaders.append("Authorization", "fr-R#WinBRj12Tyy^Sm=#bi30Zs@Ql");
      myHeaders.append("Accept-Encoding", "gzip");
      let formdata = new FormData();
      formdata.append("act", "report1");
      formdata.append(
        "data",
        `{"start_date": "${start}", "end_date": "${end}"}`
      );

var requestOptions = {
  method: "POST",
  headers: myHeaders,
  body: formdata,
  redirect: "follow",
};

        const response = await fetch(URL, requestOptions)
        const json = await response.json()
        this.setState({data: json.data})

    } catch (err) {
      console.log(err);
    }
  }

  changeDate(){

    let start = document.getElementById("start");
    let end = document.getElementById("end");
    this.setState({startDate: start.value, endDate: end.value});
  }

  // fire function on dom update
  componentDidUpdate(prevProps, prevStats){
   if(this.state.startDate !== prevStats.startDate){
     this.fetchData(this.state.startDate, this.state.endDate);
   }
  }

  render() {
      return (
        <div className="tableWrapper">
            <input id="start" type="text" placeholder="dasawkisi"/>
            <input id="end" type="text" placeholder="dasasruli"/>
            <button onClick={this.changeDate}>submit</button>
          <MaterialTable
            title="გაყიდვები ჯამური"
            data={this.state.data ? this.state.data : []}
            columns={columns}
            onRowClick={(evt, selectedRow) =>
              this.setState({ selectedRow: selectedRow.tableData.id })
            }
            options={{
              search: true,
              pageSize: 50,
              sorting: true,
              pageSizeOptions: [15, 50, 100],
              maxBodyHeight: "775px",
            }}
          />
        </div>
      );
   
  }
} 

рекорды производительности

введите описание изображения здесь