Как я могу сохранить текущий идентификатор пользователя в магазине Vue?

#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);
  })