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>
               </>
	)
}
  • Вопрос задан
  • 2827 просмотров
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
return <Navigate to="/" />
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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