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);
}
}