Прежде всего: Я знаю, что этот вопрос уже задавался здесь и что также уже есть решение. Пожалуйста, прочитайте весь пост, прежде чем отмечать его как дубликат
Я использую HashRouter из react-router-dom, и у меня есть простой маршрут:
<Route path='/folder/:folderId' component = {FileArea} />
Маршрутизация работает нормально, но, к сожалению, моя функция componentDidMount не вызывается после изменения маршрута. Это очень важно для работы моего приложения, поскольку мне приходится выполнять вызов API каждый раз, когда маршрут изменяется, чтобы получить соответствующие данные (в соответствии с параметром URL-адреса folderId).
Я нашел решение в Интернете, используя componentWillReceiveProps, и это сработало для меня, но, видимо, эта функция больше не будет работать в будущих версиях реакции: Реагировать на документацию
Я также знаю, что теоретически мог бы использовать static getDerivedStateFromProps(nextProps, prevState), но эта функция вызывается слишком часто, и было бы нелепо каждый раз вызывать API.
Есть ли альтернатива componentWillReceiveProps или способ вызвать componentDidMount?
@RyanNghiem componentDidUpdate содержит только prevProps и prevState, но мне нужны следующие реквизиты
next props is this.props, next state is this.state





вы можете использовать хуки жизненного цикла componentDidUpdate().
и чтобы получить данные маршрута в вашем компоненте, используйте this.props.match.params.folderId в этом методе
и чтобы остановить непрерывный вызов, добавьте условие if, которое будет вызываться только при изменении маршрута.
Я надеюсь, что это сработает!
Спасибо! Помогла последняя часть с предотвращением непрерывного звонка.
Вы можете использовать
componentDidUpdateдля решения