Как сохранить значение состояния при обновлении страницы - PullRequest
0 голосов
/ 03 сентября 2018

Я использую localstorage.setItem () для хранения состояния, которое будет работать при обновлении страницы, но localstorage не работает в моем случае. Мое состояние не является постоянным при обновлении страницы.
Мне нужно сохранить глобальный идентификатор пользователя, который также необходимо сохранить при обновлении страницы в течение всего проекта. Пожалуйста, помогите мне решить эту проблему. Любая помощь будет оценена.

        function setUserId(user_id = '', action) {
          switch (action.type) {
            case 'ADD_ID':
            return user_id = action.id;
            default:
            return user_id = action.id;
          }
        }
        const loadState = () => {
          try {
            const serializedState = localStorage.getItem("state");

            if (serializedState === null) {
              return undefined;
            }

            return JSON.parse(serializedState);

          } catch (err) {
            return undefined;
          }
        };

        const store = createStore(setUserId,loadState());

        function saveState(state) {
                try {
                    let serializedState = JSON.stringify(state);
                    localStorage.setItem("state",serializedState);
                }
                catch (err) {
                }
            }

        handleClick(event) {
      let that = this;
      axios.post(apiBaseUrl, payload)
      .then(function (response) {
        console.log(response);
        if(response.status == 200){
          console.log("Login successfull");
          store.dispatch({
            type: 'ADD_ID',
            id: response.data.id
          })
          store.subscribe(() => {
            //this is just a function that saves state to localStorage
            saveState(store.getState());
          });

          that.setState({
            isLoggedIn: true,
            access_token: response.data.access_token,
            user_id: response.data.id
          })

        }

        else if(response.status == 204){
          console.log("Username password do not match");
          alert("username password do not match")
        }
        else{
          console.log("Username does not exists");
          alert("Username does not exist");
        }
      })
      .catch(function (error) {
        console.log(error);
      });
    }

1 Ответ

0 голосов
/ 03 сентября 2018

Удалить try/catch из вашего saveState(). Если вы хотите отлавливать ошибки JavaScript где-либо в их дереве дочерних компонентов. и попробуйте утешить в state в saveState().

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