У меня есть два элемента панели навигации, которые имеют разные маршруты, когда я хочу переключиться с одной страницы на другую, щелкнув элементы в панели навигации, компонент не смонтирован, но маршрут изменен.
Я исследовал эту проблемуи нашел решение с помощью метода componentWillReceiveProps ().
Я попробовал этот подход:
Когда я объявляю маршруты, я передаю prop currentRoute
компонентам.
Позже в componentWillReceiveProps
проверяется следующий и этот реквизит currentRoute
и, если они отличаются, затем вызывается функция, которая сбрасывает состояние.
Код :
// THIS ARE ROUTES:
if (route === '/intakeAnalytics') {
return <Analytics userRole={userRole} currentRoute="/intakeAnalytics" />
}
if (route === '/adjusterAnalytics') {
return <Analytics userRole={userRole} currentRoute="/adjusterAnalytics" />
}
// componentWillReceiveProps
async componentWillReceiveProps(nextProps) {
if (nextProps.currentRoute !== this.props.currentRoute) {
this.setDefaultData()
}
}
Примечание : оба эти маршрута используют один и тот же компонент "Аналитика", то есть две разные аналитики, использующие один и тот же компонент.