Внутри компонента, который у меня есть, который указывает на один и тот же компонент с разными параметрами URL
Это означает, что компонент не размонтирован / перемонтирован, так как это один и тот же компонент, поэтому componentDidMount
не будет вызываться.
вызовы API устанавливают состояние, инициирующее состояние componentDidUpdate () и componentWillReceiveProps (), которые снова делают вызовы API, ведущие к бесконечному циклу
Вы должны сделать APIвызов в componentDidUpdate
(componentWillReceiveProps
будет устаревшим, и асинхронные вызовы здесь не должны выполняться в любом случае), но проверьте, был ли он уже выполнен, проверяя, есть ли данные, возвращенные вызовом API, там или изменились, чтобы избежать бесконечного повторного вызова.рендеринг:
componentDidUpdate(prevProps, prevState) {
if (this.state.data.length === 0) { // or compare with `prevState`
// make the api call
}
}