Задать вопрос
@Nikonorovich

Откуда ошибка рендеринга в react-router?

Есть в небольшом приложении небольшой Route
<Route
        path="/daily/:coord"
        render={({ match }) => {
          let coord = match.params.coord;
          hundlerURLRequest( coord  );
          return <DailyWeather />;
        }
      />


функция hundlerURLRequest( coord ) принимает координаты для fetch запроса который возвращает данные для рендеринга
Все работает, но выдает вот такую ошибку
Warning: Cannot update a component (`Connect(createSirchPanel)`) while rendering a different component (`Router.Consumer`). To locate the bad setState() call inside `Router.Consumer`, follow the stack trace as described


как это поправить или как разбор URL запроса проводить не в Route ?
  • Вопрос задан
  • 689 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Фулстек-разработчик
    16 месяцев
    Далее
  • Javascript.ru
    Курс по React
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Нетология
    Фронтенд-разработчик
    11 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
Hecc
@Hecc
Frontend. Дизайн. Шрифт.
Из любого рендера в реакте вообще не стоит запускать никаких асинхронных действий.
Тут стоит использовать вместо метода render, метод component и передать туда компонент в котором нормально обработать запрос.

Если компонент классовый то в методе componentDidMount(), если функциональный - то через useEffect()

const Render = () => (
    <Route path="/daily/:coord" component={ SuperComponent } />
)

const SuperComponent = ({ match }) => {
    let [ data, setData ] = useState( null );
    let coord = match.params.coord;

    useEffect( () => {  
        setData( hundlerURLRequest( coord  ) );
    }, [hundlerURLRequest, setData, coord ]);
    
    return <DailyWeather coords={data} />
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽