面试题答案
一键面试- 持久化保存:
- 在用户登录成功后,将
isLoggedIn
状态保存到localStorage
。假设在Vue组件的登录方法中:
<template> <div> <button @click="login">登录</button> </div> </template> <script> export default { methods: { login() { // 模拟登录成功 const isLoggedIn = true; localStorage.setItem('isLoggedIn', JSON.stringify(isLoggedIn)); } } }; </script>
- 在用户登录成功后,将
- 读取:
- 在组件挂载时读取
localStorage
中的isLoggedIn
状态。
<template> <div> <p v-if="isLoggedIn">已登录</p> <p v-else>未登录</p> </div> </template> <script> export default { data() { return { isLoggedIn: false }; }, mounted() { const storedValue = localStorage.getItem('isLoggedIn'); if (storedValue) { this.isLoggedIn = JSON.parse(storedValue); } } }; </script>
- 在组件挂载时读取
- 数据变化时处理:
- 如果
isLoggedIn
状态在组件内发生变化,需要同步更新localStorage
。可以使用Vue的watch
选项。
<template> <div> <button @click="toggleLogin">切换登录状态</button> <p v-if="isLoggedIn">已登录</p> <p v-else>未登录</p> </div> </template> <script> export default { data() { return { isLoggedIn: false }; }, mounted() { const storedValue = localStorage.getItem('isLoggedIn'); if (storedValue) { this.isLoggedIn = JSON.parse(storedValue); } }, methods: { toggleLogin() { this.isLoggedIn =!this.isLoggedIn; } }, watch: { isLoggedIn(newValue) { localStorage.setItem('isLoggedIn', JSON.stringify(newValue)); } } }; </script>
- 如果