【发布时间】:2020-08-01 08:12:00
【问题描述】:
我用 mongodb 制作了一个 react 应用程序,并使用一个简单的身份验证系统进行了表达。注册后,带有我的凭据的用户模型将保存到 localStorage,如下所示:
{
bio: ""
email: "myemail@gmail.com"
name: "myName"
role: "user"
_id: "5e9b42d31040cb0fc54c6936"
}
登录后我想更新 bio 属性,或者添加一些因为初始是空的,所以为了做到这一点,我做了一个这样的 axios 调用:
async function updateBiography (evt) {
evt.preventDefault();
try {
const res = await axios.put(`http://localhost:5000/biography/${id}`, { bioVal });
setBioVal(res.bio);
} catch (error) {
console.log(error);
}
}
所以这个东西就是返回bio的更新值,保存到数据库,这里没问题。但我也想在浏览器中更新 bio 的值,我希望在我提交时立即发生。为了实现这一点,我这样做了:
React.useEffect(() => {
const currentUser = JSON.parse(localStorage.getItem('user'));
currentUser['bio'] = bioCurrentValue;
localStorage.setItem('user', JSON.stringify(currentUser));
}, [reload]);
之后localStorage中的item是这样的:
{
bio: "the new value",
...
}
太棒了。我遇到的问题是重新加载浏览器后,localStorage 不会保留更新。 在 localStorage 中重新加载项目后,它会变成以前一样:
{
bio: "",
...
}
如何使更新在 localStorage 中持久保存?
【问题讨论】:
标签: reactjs mongodb express local-storage