Как сохранить объект массива в локальном хранилище Chromes - PullRequest
0 голосов
/ 29 февраля 2020

Я создаю приложение Budget-Calculator-App, которое должно сохранять пользовательские данные в локальном хранилище данных. Идея состоит в том, что каждый может использовать это приложение со своего устройства, исключая необходимость в базе данных.

Я застрял при сохранении всего моего состояния данных в локальном хранилище. Я сделал скриншот, чтобы показать, что я имею в виду и что я получаю вместо массива объектов. preview of what my output is

Как видите, я не получаю сохраненный массив и не знаю почему.


Вот код:

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    users: [
      {
        userName: 'John',
        salary: 2000,
        leftover: 0,
        active: false,
        inc: [],
        exp: []
      }
    ]
  },
  getters: {
    users: state => {
      return state.users;
    }
  },
  mutations: {
    addNewUser: (state, payload) => {
      state.users.push(payload);
    }
  },
  actions: {
    saveStateInStorage: (context, payload) => {
      context.commit('addNewUser', payload);
      // save current state into chrome local storage
      console.log(context.state.users);
      let userData = context.state.users;
      localStorage.setItem('budgetCalcUserData', userData);
    },
    updateStorageState: context => {
      console.log(context);
    }
  },
  modules: {}
});

Все отлично работает, кроме сохранения в локальном хранилище.

1 Ответ

3 голосов
/ 29 февраля 2020

Вы должны хранить массив :

Попробуйте

localStorage.setItem('budgetCalcUserData', JSON.stringify(userData));

При доступе вы должны разобрать, что:

var user = JSON.parse(localStorage.getItem('budgetCalcUserData'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...