LocalStorage и SessionStorage не работает React. js - PullRequest
0 голосов
/ 26 апреля 2020

Я создаю приложение с ReactJS, которое имеет модуль входа в систему и будет иметь систему ролей. В данный момент я нахожусь в части входа в систему, но у меня есть ошибка, которая не позволяет мне продолжить.

Я сохраняю имя пользователя, которое регистрируется в localStorage с именем authenticatedUser, но оно никогда не сохраняется Я заметил, что если я получу history.pu sh ..... localStorage.setItem() не работает. Кто-нибудь знает, почему это происходит или как я могу это решить? Я оставляю свой код:

Логин:

import React, { useState } from 'react';
import { Form, Button } from 'react-bootstrap'
import { useHistory, Link } from "react-router-dom";
import { AuthenticationService } from '../services/AuthenticationService.js'
import '../assets/css/Login.css'

export const Login = () => {

    const history = useHistory();
    const initialValues = {
        userName: '', password: ''
    };
    const [values, setValues] = useState(initialValues);

    function loginClicked(e) {
        if (values.userName === 'a@a.a' && values.password === 'a') {
            AuthenticationService.registerSuccessfullLogin(values.userName);
            history.push({
                pathname: '/welcome',
                state: { name: values.userName }
            });
        } else {
            e.preventDefault();
            alert("Parametros incorrectos");
        }
    }

    return (
        <div className="login">
            <Form onSubmit={(e) => loginClicked(e)}>
                <Form.Group controlId="formBasicEmail">
                    <Form.Label>Email</Form.Label>
                    <Form.Control
                        type="email"
                        placeholder="Enter email"
                        value={values.userName}
                        onChange={({ target: { value } }) => setValues({ ...values, userName: value })}
                    />
                </Form.Group>

                <Form.Group controlId="formBasicPassword">
                    <Form.Label>Password</Form.Label>
                    <Form.Control
                        type="password"
                        placeholder="Password"
                        value={values.password}
                        onChange={({ target: { value } }) => setValues({ ...values, password: value })}
                    />
                </Form.Group>
                <Form.Group controlId="formBasicCheckbox">
                    <Form.Check type="checkbox" label="Recordar usuario" />
                </Form.Group>
                <div className="boton">
                    <Button variant="primary" type="submit">
                        Ingresar
                    </Button>
                </div>
                <div>
                    <Link to="/registry" className="financionacion-link">
                        No estas registrado? Registrate!
                    </Link>
                </div>
            </Form>

        </div>
    );
}

AuthenticationService (где я делаю setItem):

export const AuthenticationService = {
    registerSuccessfullLogin(userName) {
        localStorage.setItem('authenticatedUser', userName);
    },
    logout(userName) {
        localStorage.removeItem('authenticatedUser');
    },
    isUserLoggedIn() {
        let user = localStorage.getItem('authenticatedUser')
        if (user === null) return false
        return true
    }
}

Когда я останавливаю программу сразу после установки имени Я вижу, что переменная прибывает нормально, и если я смотрю на хранилище в тот момент, переменная сохраняется. Но когда файл history.pu sh готов, хранилище стирается.

Изображение 1:

Debugger

Изображение 2:

Storage

1 Ответ

0 голосов
/ 26 апреля 2020

Я нашел проблему, это была моя ошибка, у меня была навигационная ссылка, которая была выходом из системы, и он выполнил действие.

До:

<Nav>
   <Nav.Link href="/" onClick={AuthenticationService.logout()}>Logout</Nav.Link>
</Nav>

Сейчас:

<Nav>
   <Nav.Link href="/" onClick={() => AuthenticationService.logout()}>Logout</Nav.Link>
</Nav>

Спасибо всем большое, привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...