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

Как сделать перенаправление на другую страницу с условием из контекста, react-router-dom v6?

Приветствую, у меня есть страница продукта которая должна отрисовыватся от того является ли в контексте ключ product === null или нет, если равно то перекидывать на другую страницу, у меня в этой компоненте должны браться данные з контекста, проверятся не равен ли продукт нулю и используется два useState для состояния кнопок которые должны тоже брать состояние из контекста, думал может в route как-то можно сделать редирект?
Код:
App
<Routes>
                <Route path="/" element={<Main />} />
                <Route path="/product" element={<ProductPage />} />
                <Route path="*" element={<ErrorPage />} />
</Routes>

ProductPage
export const ProductPage = () => {

	const { product, contextFindItem, contextRemoveItem, contextPushItem } = useGlobalContext();

	if (product === null) {
		<Navigate to="/" />
	}// если ставить тут, то ошибка что нельзя использовать перенаправление до загрузки useState, а если ставить после // этого то ошибка что в useState personalKey === null

	const [like, setLike] = useState<boolean>(contextFindItem('likes', product!.personalKey) ? false : true);
	const [buy, setBuy] = useState<boolean>(contextFindItem('basket', product!.personalKey) ? false : true);

	return (
		<>
                       <div className={s.productInfoMainAdd}>
							<button className={s.productInfoMainAddBuy} onClick={() => clickSetIn('basket')}>{buy ? 'В корзине' : 'В корзину'}</button>
							<button className={s.productInfoMainAddLike} onClick={() => clickSetIn('likes')}>{like ? 'Нравится' : 'Не нравится'}</button>
						</div>
               </>
	)
}
  • Вопрос задан
  • 3841 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
return <Navigate to="/" />
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽