import { computed } from 'vue'; import { useStore } from 'vuex'; /** * 初始化 * token 及 userId处理: * 1.1 store里有token 且没过期直接:使用store的token √ * 1.2 store里的token不可用 查localStorage * 因为一开始就将local的数据同步到了store里所以不用管local的数据了 * 2. store里token不可用 查userId 通过store里的userId获取token * url 与 local的userId 一开始就同步到了store里所以不用考虑 * @param {object | null} options */ export default async function useGetToken() { const store = useStore(); const token = computed(() => store.state.user.token); const tokenIsAvailable = computed(() => store.getters['user/tokenIsAvailable']); // token是否可用 const userId = computed(() => store.getters['user/userId']); debugger; if (token.value && tokenIsAvailable.value) { // 1.1 store里有token 且没过期直接:使用store的token return token.value; } else { // 2. 根据userId获取token if (userId.value) { try { const { token } = await store.dispatch('user/getTokenByUserId', userId.value); return token; } catch (error) { console.error('error: ', error); return null; } } else { return null; } } }