Ионный React props.match.params не обновляется

#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