reactjs - React - 从本地存储中获取项目
问题描述
我是 React 的新手,正在尝试建立一个基本的客户端会话。当我尝试从本地存储中检索用户名时出现错误。SyntaxError: Unexpected token p in JSON at position 0
你对修复它有什么建议吗?
导航栏.js
const username = JSON.parse(localStorage.getItem('username'));
const NavBar = props => {
if (props.isAuth !== null) {
return <div>
## here I am trying to display the username
<p>Logged In as {{username}}</p>
</div>;
} else {
return <span>Not logged in</span>;
}
};
export default NavBar;
应用程序.js
function App() {
const [loggedIn, setLoggedIn] = useState(localStorage.getItem("token"));
return (
<div>
<Router>
<Navbar isAuth={loggedIn} />
</Router>
<div>
<button
onClick={() => {
if (loggedIn) {
localStorage.removeItem("token", null);
setLoggedIn(null);
} else {
localStorage.setItem("token", true);
localStorage.setItem("username", "pierre-alex");
setLoggedIn(true);
}
}}
value="toggle"
>
Toggle
</button>
</div>
</div>
);
}
export default App;
谢谢你
解决方案
如果 的值username
是一个对象,那么我们需要在将其存储在 localStorage 时对其进行字符串化。然后我们可以解析它以获取数据。
localStorage.setItem('username',JSON.stringify({name:'Jonh Doe'}));
const username = JSON.parse(localStorage.getItem('username');
如果存储在 localStorage 中的值不是对象,那么我们不需要解析它。我们可以像下面这样访问它。
const username = localStorage.getItem('username')
推荐阅读
- lotus-domino - “磁盘空间不足:~tmpview.tmp”如何解决?
- angular6 - Angular-6 路由器出口不是已知元素,模板解析错误
- antlr4 - 为什么 C++ 目标比 Java 目标慢 6 倍
- javascript - 如何验证 Nuxt 中的路由参数?
- javascript - 即使在我的页面上执行提交或重置等功能后,如何保持背景图像切换
- python - Python - 将列表作为参数传递给类
- linux - | 中的字符串值 分隔字段在 awk 中向右拆分
- java - 我无法弄清楚缺少什么格式项目
- java - Spring Boot 2.0.5 是否不运行请求参数
- c# - 如何在计时器运行时实时更改计时器剩余的时间?