Я использую фляжку в качестве внутреннего сервера. Действие vuex не устанавливает токен из состояния локального хранилища для вызова API Axios. Пожалуйста, помогите мне с тем, что мне не хватает. в настоящее время я застрял здесь, это связано с моим предыдущий вопрос, на который я не получил ответа, поэтому отправляю снова .. Ниже мой код магазина vuex:
Vue.use(Vuex);
export default new Vuex.Store({
state: {
// accessToken: JSON.parse(localStorage.getItem('access_token')) || null,
// refreshToken: JSON.parse(localStorage.getItem('refresh_token')) || null,
accessToken: localStorage.getItem('access_token') || null,
refreshToken: localStorage.getItem('refresh_token') || null,
APIData: '',
},
actions: {
refreshToken(context) {
return new Promise((resolve, reject) => {
console.info(context.state.refreshToken);
getAPI.post('/refresh', {
// refresh_token: context.state.refreshToken,
headers: { Authorization: `Bearer ${context.state.refreshToken}` },
})
.then((response) => {
console.info('New access token granted');
context.commit('updateAccessToken', response.data.access_token);
console.info(context.state.accessToken);
resolve(response.data.access_token);
})
.catch((error) => {
console.info('\'error in refresh:\'', error);
reject(error);
});
});
},
}
@ Тим, можешь ли ты привести пример?
Только что видел ваш запрос примера от 11 часов назад (здесь утро). Сообщите мне в комментарии, если вы решите проблему в течение следующих 8 часов. Если нет, то попробую сегодня вечером посмотреть.
Привет, еще не решено. не очень хорошо с js. с нетерпением жду например. полный код доступен в моем предыдущем посте, я добавил его в свой вопрос.





Вот пример, который я построил с упрощенным хранилищем Vuex и компонентом Vue, чтобы продемонстрировать функциональность.
/store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
accessToken: '',
localStorage: window.localStorage
},
getters: {
getTokenFromLocalStorage: state => {
return state.localStorage.getItem('accessToken');
}
},
mutations: {
storeTokenInLocalStorage(state, newToken) {
state.accessToken = newToken;
state.localStorage.setItem('accessToken', newToken);
}
}
})
VuexLocalStorage.vue
<template>
<div class = "vuex-local-storage">
<div class = "row">
<div class = "col-md-6">
<button class = "btn btn-secondary" @click = "getAccessToken">Get Access Token</button>
<h5>{{ accessToken }}</h5>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
accessToken: ''
}
},
methods: {
getAccessToken() {
this.accessToken = this.$store.getters.getTokenFromLocalStorage;
}
},
created() {
// Store initial access token
this.$store.commit('storeTokenInLocalStorage', 'access-token');
}
}
</script>
Я не эксперт по Vuex, но использовал его несколько раз. Попробуйте инициализировать свои значения состояния константами в качестве заполнителей и создать мутации (если синхронные) или действия (если асинхронные) для вызова
localStorage.getItem().