Я пытаюсь отобразить форму входа только в том случае, если в хранилище redux нет токена. Когда я загружаю страницу, все работает нормально, и я вижу форму. После правильного входа в систему ничего не происходит, и мне нужно обновить страницу.

Как я могу обновить страницу?

const [isLogged, setIsLogged] = useState(false);
const token = useSelector((state) => state.token.token);

useEffect(() => {
    if (token === null || token === "undefined" || token === "") {
        return setIsLogged(false);
    } else {
        return setIsLogged(true);
    }
}, []);

return (
    <BookList>
        {!isLogged && <Login />}

`

0
Matteo Barbero 12 Фев 2021 в 16:19

1 ответ

Лучший ответ

После завершения входа в систему ничего не происходит, потому что состояние вашего компонента isLogged по-прежнему равно false. Хранилище redux обновляется, а ваш компонент - нет.

Нет необходимости хранить isLogged в состоянии. Это то, что может быть получено из состояния вашего хранилища redux.

const token = useSelector((state) => state.token.token);

const isLogged = ! (token === null || token === "undefined" || token === "");

return (
    <BookList>
        {!isLogged && <Login />}

Но вы можете сократить свой чек и просто посмотреть, является ли token правда, поскольку "", null и undefined все ложь.

const token = useSelector((state) => state.token.token);

return (
    <BookList>
        {!token && <Login />}
0
Linda Paiste 13 Фев 2021 в 01:05