React useNavigate перенаправляет, но не отображаетJavascript

Форум по Javascript
Ответить
Anonymous
 React useNavigate перенаправляет, но не отображает

Сообщение Anonymous »

У меня есть простое приложение с React и Vite.
Если пользователь регистрируется, ему необходимо подтвердить адрес электронной почты по ссылке (

Код: Выделить всё

/auth/ve/KEY
).
Маршрут для этого:

Код: Выделить всё

{
path: "ve/:v",
element: user ?  : ,
},
Когда Пользователь заходит на эту страницу, выполняется почтовый вызов Axios. POST возвращает код состояния 404, как и предполагалось на данный момент.
Компонент Verify:

Код: Выделить всё

import axios from "axios";
import { useEffect, useRef } from "react";
import { useNavigate, useParams } from "react-router-dom";
import { Spinner } from "../ui/spinner";

const Verify = () => {
const { v } = useParams();
const nav = useNavigate();
const hasRun = useRef(false);

useEffect(() => {
if (hasRun.current) return;
hasRun.current = true;

const verify = async () => {
if (!v) {
nav('/', { replace: true });
return;
}

try {
await axios.post(
'http://localhost:3001/api/user/verify',
{ v },
{ withCredentials: true }
);
nav('/auth/login', {
state: {
message: {
type: 'success',
title: 'Verifizierung erfolgreich',
text: 'Email-Adresse erfolgreich verifiziert. Du kannst dich jetzt einloggen.'
}
}
});
} catch (e: any) {
nav('/auth/login', {
state: {
message: {
type: 'error',
title: 'Fehler',
text: e.response?.data?.error || 'Unbekannter Fehler'
}
}
});
}
};

verify();

}, [v, nav]);

// Spinner anzeigen, solange wir die API prüfen oder umleiten
return (



);
};

export default Verify;


Он ДОЛЖЕН перенаправить на /auth/login и показать сообщение (я использую тот же вызов useNavigation() с другим сценарием регистрации, и это работает). Однако отображается только Spinner, а вход в систему не отображается. Если я обновлю с помощью F5, он будет отображаться так, как должен. До этого маршрут для /auth/login не вызывается. Что не так? URL-адрес в браузере меняется на /auth/login.
Если я захожу в /auth/login вручную, сайт работает и компонент входа отображается.
Мой сервер — Node.js.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/798 ... not-render
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»