我正在使用 react hook,我想从客户端的本地存储中检索一些信息(如果存在)。
下面是我定义的应用状态:
const [name, setName] = useState(JSON.parse(localStorage.getItem("personalInfo")).name || "");
我希望如果本地存储中没有数据,那么将使用一个空字符串作为初始状态。
然而,它产生了一个错误:TypeError: JSON.parse(...) is null
说明即使本地存储为空,空字符串也不会作为初始状态使用。
它之前按预期工作,但在我在另一个组件中添加一些复杂的代码后,它开始产生错误。知道为什么会发生这种情况,以便我知道在哪里调试吗?
答案 0 :(得分:2)
你可以使用
const localStore = localStorage.getItem("personalInfo")
const [name, setName] = useState(localStore ? JSON.parse(localStore).name : "");
或者你可以安全地解析 JSON
function parseJson(){
try {
return JSON.parse(localStorage.getItem("personalInfo")).name;
} catch(ex){
return "";
}
}
const [name, setName] = useState(parseJson();