Как вы можете видеть, мое пользовательское состояние вначале имеет значение null, но когда пользователь входит в систему, мне нужен идентификатор пользователя для моего действия под названием setFavoriteCrypto
Итак, я могу получить указанные c данные, относящиеся к подключенному пользователю, но поскольку vuex инициализирует состояние каждый раз, когда появляется ссылка sh страницы. пользователь становится нулевым
Я знаю, что есть пакет, называемый постоянным состоянием, с которым я мог бы работать.
Но я хотел бы знать, есть ли другой способ управления моим подключенным пользователем без зависимости в пакете?
Я использую node.js в качестве серверной части для этого приложения.
import Api from '@/services/Api'
import axios from 'axios'
import router from '@/router'
const state = {
localStorageToken: localStorage.getItem('user-token') || null,
token: null,
user: null,
favoriteCrypto: []
}
const mutations = {
setToken(state, token) {
state.localStorageToken = token
state.token = token
},
setUser(state, user) {
state.user = user
},
setFavoritecrypto(state, crypto) {
state.favoriteCrypto = crypto
}
}
const actions = {
setToken({commit}, token) {
commit('setToken', token)
},
setUser({commit}, user) {
commit('setUser', user)
},
setFavoriteCrypto({commit}, token) {
if(state.user) {
return Api().get('getuserfavoritescoins', {
params: {
userId: state.user.id
}
})
.then(response => response.data.coins)
.then(cryptoFav => {
commit('setFavoritecrypto', cryptoFav)
})
}
else{
console.log("there's not user state")
}
},
loginUser({commit}, payload) {
return Api().post('login', payload)
.then(response => {
commit('setUser', response.data.user)
commit('setToken', response.data.token)
localStorage.setItem('user-token', response.data.token)
axios.defaults.headers.common['Authorization'] = response.data.token
router.push('/main').catch(e => {})
})
},
logoutUser({commit, dispatch}) {
localStorage.removeItem('user-token')
commit('setUser', null)
commit('setToken', null)
delete axios.defaults.headers.common['Authorization']
}
}
const getters = {
isAuthenticated: state => !!state.localStorageToken,
}
export default {
namespaced: true,
state,
getters,
actions,
mutations
}