#vue.js #vuex
Вопрос:
Я хочу сохранить идентификатор пользователя при входе в систему, однако я не могу получить доступ к хранилищу с помощью this.$store
самого хранилища, предположительно, потому что это не компонент Vue, а файл JS.
РЕДАКТИРОВАТЬ: Решение основано на ошибке в приведенном ниже коде
export default createStore({
state: {
user: null,
userId: null
},
mutations: {
setUser(state, user) {
state.user = user;
console.log("User set in store");
},
setUserId(state, userId) {
state.userId = userId;
console.log("User ID set in store");
}
},
getters: {
getUser: state => {
console.log('Retrieving user...')
return state.user;
}
},
actions: {
async login(store, credentials) {
let response = await(await fetch("http://localhost:4000/api/login", {
method: "POST",
body: JSON.stringify(credentials),
credentials: "include",
})).json();
store.commit('setUserId', response.userId);
},
},
});```
Ответ №1:
Ваши действия имеют доступ к ссылке на магазин с помощью параметра async login(store, credentials)
Таким образом, вы можете вызвать мутацию setUserId
из ссылки на магазин, когда получите ответ
.then(function (response) {
store.commit('setUserId', response.json().id);
})