Компонент не перерисовывается при нажатии на ссылку

Я использую свойство Link для реакции на переход по тому же URL-адресу, но с другим параметром. Но мой api не вызывает снова, поскольку я помещаю часть вызова api в componentDidMount (). При щелчке по URL-адресу изменяется мой параметр URL-адреса. Ниже приведен код.

componentDidMount(){ 
   let profile_id = window.localStorage.getItem('profile_id');
   if (profile_id && profile_id!==''){
     this.props.fetchSingleProfile(profile_id)          
   }
}

Первый раз вызов API и данные успешно отрисованы. Ниже показано, как я использую ссылку.

<Link to = {this.userId}>Next</Link>

Теперь, щелкнув ссылку, я успешно перенаправляюсь на указанный URL, но, как я уже упоминал, "Компонент снова отображается при успешной маршрутизации, но api снова не вызывает". Есть ли что-нибудь в реакции, которая знает об этом, мой URL-адрес изменен, теперь снова вызовите api.

Примечание: Могу ли я использовать любой метод жизненного цикла, например: componentWillReceiveProps, но я не хочу снова вызывать api.

Не могли бы вы добавить к своему вопросу пример кода, показывающий нам, как вы это делаете?

c-chavez 23.11.2018 11:11

я отредактировал код.

user10298495 23.11.2018 11:52

так что это не только маршрут. единственный параметр также равен. почему вы вообще здесь используете <Link>? что-то вроде <button onClick = {this.loadData}> просто перезагрузит данные.

skyboyer 23.11.2018 13:28

OnClick of a Link, я снова вызываю api, но это неправильный подход, которому я следую. Есть ли какой-либо метод жизненного цикла, который поможет мне снова вызвать api?

user10298495 24.11.2018 08:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
2
4
685
1

Ответы 1

But my api is not calling again as i put the api call part in the componentDidMount().

У вас один и тот же маршрут, поэтому визуализируется один и тот же <Route>. Все вложенные компоненты остаются такими же, поэтому вместо повторного монтирования они просто обновляются.

У вас есть несколько способов справиться с этим:

  1. Получать данные не только на componentDidMount, но и на componentDidUpdate
  2. Используйте key для перемонтировать компонент

Это невозможно сделать только с react-router<Link />, так как это фактически не его ответственность

Спасибо за ваш быстрый ответ. не могли бы вы показать мне пример, так как это срочно.

user10298495 23.11.2018 11:21

вы говорите, мне нужно использовать componentDidUpdate и снова вызвать api. Если мне нужно снова вызвать api, я могу вызвать его функцию onClick, в которой будет вызывать api. но это неправильный подход.

user10298495 23.11.2018 12:54
componentDidUpdate получает обновление даже для небольшого изменения, должны ли мы сохранить некоторую переменную state, чтобы проверить, должен ли компонент также получать данные в componentDidUpdate?
TheCoder 02.04.2019 05:53

@TheCoder, вы хотите проверить и props, и state в cDU? Я не уверен, следую ли я за твоим вопросом

skyboyer 02.04.2019 05:56

Другие вопросы по теме