@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 ?
  • Вопрос задан
  • 666 просмотров
Решения вопроса 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} />
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы