#reactjs #react-native #react-hooks #react-router
#реагирует на #реагировать-родной #реагируют-крючки #реагировать-маршрутизатор
Вопрос:
У меня есть компонент навигации, в котором я передаю параметр на другую страницу, параметр передается, однако данные в раскрывающемся списке не обновляются для переданного идентификатора:
нав.:
lt;Link to='/service/ServiceAppointment/${car.Make}'gt; { serviceAppointment } lt;/Linkgt;
страница назначения:
const ScheduleAppointment = () =gt; { const { id } = useParams(); console.log (id); //I can see the ID passed to the page in the console useEffect(() =gt; { console.log(id); //the ID is not there scheduleAppointment(id); }); const Appointment= () =gt; { //call to API for open dates //the ID never gets here } }
Маршрутизатор:
lt;Route exact path='/service/appointment/:id' component={ ScheduleAppointment } /gt;
как я могу изменить страницу назначения, когда на нее передается новый идентификатор?
Ответ №1:
Аргумент зависимостей useEffect
is useEffect(callback, dependencies)
Давайте рассмотрим побочные эффекты и прогоны:
Не предусмотрено: побочный эффект запускается после каждого рендеринга.
import { useEffect } from 'react'; function MyComponent() { useEffect(() =gt; { // Runs after EVERY rendering }); }
Пустой массив []: побочный эффект выполняется один раз после первоначального рендеринга.
import { useEffect } from 'react'; function MyComponent() { useEffect(() =gt; { // Runs ONCE after initial rendering }, []); }
Имеет реквизиты или значения состояния [prop1, prop2, ..., state1, state2]
: побочный эффект запускается только при изменении любого значения зависимости.
import { useEffect, useState } from 'react'; function MyComponent({ prop }) { const [state, setState] = useState(''); useEffect(() =gt; { // Runs ONCE after initial rendering // and after every rendering ONLY IF `prop` or `state` changes }, [prop, state]); }
в вашем случае попробуйте этот способ
useEffect(() =gt; { console.log(id); //the ID is not there scheduleAppointment(id); },[id]);
Комментарии:
1. Это сработало. Добавление [id] сработало, спасибо: useEffect (() = gt; { console.log(идентификатор); //идентификатора нет в расписании(идентификатор); },[идентификатор]);
Ответ №2:
Пожалуйста, обновите ссылку ниже вместо вашего кода
lt;Link to=`/service/ServiceAppointment/${car.Make}`gt; { serviceAppointment } lt;/Linkgt;
Я надеюсь, что это сработает для вас! Спасибо.
Комментарии:
1. Вот что у меня есть, по какой-то причине машина за ${. Макияж} появился на странице зеленым цветом