Вы не должны использовать getDerivedStateFromProps
жизненный цикл для выполнения вызовов API. Вместо этого используйте componentDidUpdate
, чтобы сделать вызов API, и как только вы получите ответ API, выполните this.setState
. Также, как указано в другом ответе, вы не можете использовать this
в методе stati c.
componentDidUpdate(prevProps) {
if (this.props.myData !== prevProps.myData) {
this.callMyApi();
}
}
callMyApi() {
fetch("/api")
.then(response => {
this.setState({ ... });
})
}
Если вы пишете новый компонент, вы можете также написать функциональный компонент и использовать useState
и useEffect
для запуска вызова API при обновлении учетной записи.
Например:
...
const {page} = this.props;
const [images, setImages] = useState([]);
useEffect(() => {
fetch(`/myfavApi`)
.then(data => data.json())
.then(images => {
setImages(images.concat(images));
});
}, [page]); // provide page(prop) as dependency.
...