react挂钩条件useState-JSON.parse(..)为null



我正在使用react hook,如果存在,我想从客户端的本地存储中检索一些信息。

以下是我定义的应用程序状态:

const [name, setName] = useState(JSON.parse(localStorage.getItem("personalInfo")).name || "");

我预计,如果本地存储中没有数据,那么将使用一个空字符串作为初始状态。

但是,它会产生一个错误:TypeError: JSON.parse(...) is null

它表明,即使本地存储为空,空字符串仍然不能用作初始状态。

它以前按预期工作,但在我在另一个组件中添加了一些复杂的代码后,它开始产生错误。知道为什么会发生这种情况,这样我就知道在哪里调试了吗?

您可以使用

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();

最新更新