Сохранение данных в локальное хранилище с использованием постоянного состояния vuex
В настоящее время я использую этот плагин vuex-persistedstate
и я хотел бы использовать его с модулем Vuex моего приложения Nuxt.
В основном у меня есть модуль входа в систему, если успех, а затем сохранить authToken
исходя из ответа на localStorage
Вот мой код:
import axios from "axios";
import createPersistedState from 'vuex-persistedstate';
export const state = () => ({
signInAttrs: {
email: "",
password: ""
},
authToken: ""
});
export const mutations = {
SET_AUTH_TOKEN(state, token) {
state.authToken = token;
createPersistedState({
key: 'admin-auth-key',
paths: [],
reducer: state => ({
authToken: '123123123'
})
})(store);
}
};
export const actions = {
signInAdmin({ commit }, context) {
return axios.post(`${process.env.BASE_URL}/sign_in`, {
email: context.email,
password: context.password
}).then(response => {
commit('SET_AUTH_TOKEN', response.data.headers.token);
}).catch(error => {
console.log(`failed ${error}`);
});
}
};
export const getters = {
signInAttrs(state) {
return state.signInAttrs;
},
authToken(state) {
return state.authToken;
}
};
Внутри мутаций есть SET_AUTH_TOKEN
который получает токен как параметр из API. Как я могу сохранить его в localStorage?
1 ответ
Я думаю, что вы неправильно понимаете использование vuex-persistedstate. Как только вы добавите его в магазин плагинов (plugins: [createPersistedState()]
), он автоматически обновляет переменную localStorage vuex
с копией вашего магазина на каждый коммит мутации (см. пример). Так что ваш токен должен быть внутри vuex.authToken
в localStorage
уже.
Если вы хотите просто сохранить переменную с произвольным именем, вы можете сделать это без плагинов: localStorage.setItem('key', 'value')
, Смотрите этот вопрос.