#reactjs #ionic-framework #react-router-dom #ionic-react
#reactjs #ionic-framework #react-router-dom #ионная реакция
Вопрос:
Я создаю сайт для отображения недвижимости с помощью React и Ionic.
У меня есть эта маршрутизация в моем App.tsx
<IonApp>
<IonReactRouter>
<Nav />
<IonRouterOutlet id="first">
<Route exact path="/" component={Home} />
<Route exact path="/all-properties" component={Properties} />
<Route exact path="/property/:id" component={Property} />
</IonRouterOutlet>
</IonReactRouter>
</IonApp>
И я ссылаюсь на одну "/property/:id"
страницу на моем веб-сайте следующим образом:
<Link to={"/property/" variableId}> ... </Link>
Теперь на моей "/property/:id"
странице я могу получить доступ к идентификатору по URL-адресу следующим образом:
useIonViewDidEnter(() => {
console.log(props.match.params.id); // This works the first time
});
Проблема в том, что когда я нажимаю назад, чтобы перейти на главный экран, а затем посещаю другую свою "/property/:id"
страницу, props.match.params.id
она остается прежней. Он не обновляется.
Что можно сделать, чтобы это исправить?
Комментарии:
1. было бы полезно узнать, как осуществляется доступ к маршруту
2. @AaronSaunders Я не уверен, что вы имеете в виду, не могли бы вы расширить?
Ответ №1:
Оказалось, что проблема заключалась в методе жизненного цикла Ionics.
Мое решение состояло в том, чтобы вместо этого использовать эффект следующим образом:
useEffect(() => {
console.log(props.match.params.id)
}, [props.match.params.id])
Комментарии:
1. Спасибо, застрял на этом навсегда. Не ожидал, что у useIonViewDidEnter не будет готовых реквизитов… К вашему сведению, он также работает с
useParams()
хуком изreact-router-dom
вместоprops.match.params.id