Во-первых, вы можете использовать 'Mixins' в VueJS. Mixins - это функция, которая позволяет использовать одну и ту же функцию во всех компонентах приложения.
Во-вторых, вы можете использовать Vuex.
- Создать магазин. (Например: CustomAPI. js)
- Запись геттеров, мутаций и действий в файл
- Вызов действий в компонентах (например: this. $ Store.dispatch ('StuffAPI')). then ()
- Сохранять мутации результата StuffAPI в хранилище
- Извлекать мутированные данные, используя геттеры
Для справки, проверьте код ниже:
import * as types from '../types'
// Import axios or any http client
export const state = {
isLoggedIn: false
}
export const getters = {
isLoggedIn: state => state.isLoggedIn
}
export const mutations = {
[types.MUTATE_LOGIN_FLAG]: (state, isLoggedIn) => {
state.isLoggedIn = isLoggedIn
}
}
export const actions = {
AUTH_LOGIN: ({ commit }, payload) => {
return new Promise((resolve, reject) => {
// MY HTTP LOGIN REQUEST CODE HERE
// On result..
commit(types.MUTATE_LOGIN_FLAG, true)
})
},
AUTH_LOGOUT: ({ commit }, payload) => {
return new Promise((resolve, reject) => {
// MY HTTP LOGOUT REQUEST CODE HERE
// ... On result,
commit(types.MUTATE_LOGIN_FLAG, false)
})
}
}
Теперь, когда мне понадобится статус входа в какой-либо компонент, я буду использовать:
this.$store.getters.isLoggedIn
Возвращает значение True или False.
Всякий раз, когда мне нужно войти или выйти, я Я буду использовать:
this.$store.dispatch('AUTH_LOGIN')
Я могу вызывать эти действия в любом месте моего приложения.
Примечание: Это всего лишь пример реализации. Вы действительно не пишете вход в систему в магазине: D