Я бы посоветовал вам взглянуть на vuex .
С помощью vuex вы можете создать магазин, в котором будете хранить информацию о пользователе. Затем вы можете получить доступ и настроить пользователя глобально.
store.js
import Vue from "vue";
import Vuex from "vuex";
Vue.use(Vuex);
const state = {
user: window.localStorage.getItem("user")
};
const mutations = {
SET_USER(state, user) {
state.user = user;
window.localStorage.setItem("user", user);
}
};
const actions = {
SetUser({ commit }, user) {
commit("SET_USER", user);
}
};
const getters = {
user(state) {
return state.user;
}
};
export default new Vuex.Store({
state,
mutations,
actions,
getters
});
И затем использовать магазин следующим образом:
<template>
<div id="app">
<h1 v-if="user">Hello {{user}}</h1>
<button @click="SetUser('John')">Set User</button>
</div>
</template>
<script>
import { mapGetters, mapActions } from "vuex";
export default {
name: "App",
methods: {
...mapActions(["SetUser"])
},
computed: {
...mapGetters(["user"])
}
};
</script>
Вам также необходимо зарегистрироватьсяваш магазин вот так:
import Vue from "vue";
import App from "./App";
import store from "./store";
new Vue({
el: "#app",
store,
components: { App },
template: "<App/>"
});
Я создал пример с магазином, где пользователь хранится в localStorage https://codesandbox.io/s/vuex-store-example-39icr?module=%2Fsrc%2Fstore.js