![](/img/trans.png)
[英]What is the best way to make a post page with comments. Laravel - vue.js - inertia-vue
[英]Best way to define user session data in Vue using Laravel and Inertia
我正在使用 Laravel、Vue 和 Inertia 开发一个带有动态菜单的应用程序。
为了传递 session 有关菜单(应显示哪些项目、图标等)和用户数据(头像和名称)的信息,实际上我使用了HandleInertiaRequests中间件。
但是,通过这种方式,所有信息都会在每个 Inertia 请求中发送,我相信这远非完美。
那么,是否有某种策略允许在登录时只发送一次 session 信息?
在这种情况下,我将从MasterLayout.vue
将用户详细信息存储在vuex
中。 只有在用户登录后才能mounted
布局。
在MasterLayout.vue
中;
<template>
...
</template>
<script>
...
mounted() {
this.$store.dispatch("setUser");
}
</script>
现在,在auth.js
中;
export const auth = {
state: () => ({
user: [],
}),
actions: {
setUser({ commit }) {
commit("SET_USER");
},
},
mutations: {
async SET_USER(state) {
await axios
.get(route("user"))
.then((response) => {
state.user = response.data;
})
.catch((error) => {
console.log(error);
});
},
},
getters: {
auth(state) {
return state.user;
},
},
};
现在,在Avatar.vue
组件中;
<template>
//do anything with data
{{auth.name}}
{{auth.email}}
</template>
<script>
computed: {
...mapGetters(["auth"]),
},
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.