【发布时间】:2021-03-26 09:49:14
【问题描述】:
当我使用表单登录时:
- localStorage 中的 loggedIn 值更改为“true”
- 路由器推送到 /home
- 标题不变,仍然显示登录/注册按钮
我需要它
- localStorage 中的 loggedIn 值更改为“true”
- 路由器推送到 /home
- 标题更改和图片
Header.vue:
<div class="flex flex-wrap items-center justify-end ">
<HeaderItem v-if="!isLoggedIn"
class="pl-10" text = "Login" link="/login"/>
<HeaderItem v-if="!isLoggedIn" class="pl-10"
text = "Signup" link="/signup"/>
<div v-if="isLoggedIn">
<UserHeader/>
</div>
</div>
export default {
name: 'App',
components: {HeaderItem, UserHeader},
data() {
return {
homeLink: "/home"
}
},
created: {
isLoggedIn() {
console.log(JSON.parse(localStorage.getItem("loggedIn")) === "true");
if (localStorage.getItem("loggedIn") === "true") {
console.log("STORAGE LOGGED IN TRUE");
}
else {
console.log("STORAGE LOGGED IN FALSE");
}
return localStorage.getItem("loggedIn") === "true";
}
}
}
在我按下 Ctrl+Shift+R 后,它只会打印正确的消息并更改标题。但是 localStorage 立即具有正确的 loggedIn 值。我该如何解决?
编辑:
我也试过这个:
<div class="flex flex-wrap items-center justify-end ">
<HeaderItem v-if="!loggedIn"
class="pl-10" text = "Login" link="/login"/>
<HeaderItem v-if="!loggedIn" class="pl-10"
text = "Signup" link="/signup"/>
<div v-if="loggedIn">
<UserHeader/>
</div>
</div>
export default {
name: 'App',
components: {HeaderItem, UserHeader},
data() {
return {
homeLink: "/home",
// loggedIn: false
}
},
computed: {
loggedIn() {
return localStorage.getItem("loggedIn") === "true";
},
...
结果是一样的:只有页面刷新(Ctrl+Shift+R)后header才会改变。
编辑:
我不能在Header 中设置localStorage.loggedIn!在LoginForm.vue中设置,完全不同的组件
【问题讨论】:
-
$("#header").load("../pages/header.html");
-
不起作用 - 请提供一些诊断检查。控制台
.load is not a function或Access-Control-Allow-Origin是否有错误。网络标签是否有错误:404 header.html not found见idownvotedbecau.se/itsnotworking -
这(很可能)意味着您正在从您的计算机本地打开
.html文件,例如双击您的桌面。以这种方式打开 html 页面时,某些 js 操作(例如 ajax)被阻止给出该消息。您需要从服务器“运行”您的页面 - 例如看到这个问题:stackoverflow.com/questions/5050851/…
标签: javascript vue.js vuejs2