Javascript React componentDidUpdate在状态更改时进行无限API调用

Javascript React componentDidUpdate在状态更改时进行无限API调用,javascript,reactjs,Javascript,Reactjs,我第一次使用类组件,我面临一个无限循环。 我的初始状态是 this.state = { selectedYear: null, error: null, isLoaded: false, items: [], }; } 我有一个获取数据的函数 fetchData = () => fetch( `https://jsonmock.hackerrank.com/api/football_competit

我第一次使用类组件,我面临一个无限循环。 我的初始状态是

   this.state = {
      selectedYear: null,
      error: null,
      isLoaded: false,
      items: [],
    };
  }
我有一个获取数据的函数

  fetchData = () =>
    fetch(
      `https://jsonmock.hackerrank.com/api/football_competitions?year=${this.state.selectedYear}`
    )
      .then((res) => res.json())
      .then(
        (result) => {
          this.setState({
            isLoaded: true,
            items: result.data,
          });
        },
        (error) => {
          this.setState({
            isLoaded: false,
            error,
          });
        }
      );
还有我的componentDidUpdate方法

  componentDidUpdate(prevState) {
    if (prevState.selectedYear != this.state.selectedYear) {
      this.fetchData();
      console.log(this.state.items);
    }
  }
问题是,当我更改状态中的年份时,fetchData会被调用无数次。 这是一个初级问题,但我从未使用过类组件。
谢谢

根据React文档,方法的签名为

componentDidUpdate(prevProps, prevState, snapshot)
您在代码中所做的是使用
prevProps.selectedYear
检查
此.state.selectedYear
(这很可能是
未定义的

试试下面

 componentDidUpdate(_, prevState) {
    if (prevState.selectedYear != this.state.selectedYear) {
      this.fetchData();
      console.log(this.state.items);
    }
  }