reactjs - 如何存储到本地存储?(反应)
问题描述
我有一个问题要问你......在我的反应应用程序上,我有一个<input></input>
但我希望用户能够通过本地存储保留他的消息。
class Profil extends Component {
message() {
if (localStorage != 'undefined'){
document.getElementById('message').value = localStorage.getItem('message');
}
else {
alert("localStorage is not supported");
}
}
render() {
return (
<div>
<input name="message" onChange={() => this.message()}></input>
</div>
);
}}
这样,当我写信时,我直接收到一条错误消息:
TypeError: localStorage.getItem(...) is null
这条线是假的:
document.getElementById('message').value = localStorage.getItem('message');
我需要做什么 ?
解决方案
无需手动操作 DOM,您可以保持消息处于状态并在每次更改时更新 localStorage 值,并在创建组件时从 localStorage 读取值。
例子
class Profile extends React.Component {
constructor() {
super();
this.state = {
message: localStorage.getItem("message") || ""
};
}
onChange = event => {
const message = event.target.value;
localStorage.setItem("message", message);
this.setState({ message });
};
render() {
return <input value={this.state.message} onChange={this.onChange} />;
}
}
推荐阅读
- javascript - Mongoose 仅按时间排序日期
- c# - SignalR 核心集线器连接 lambda 动作
- reactjs - npm 错误!找不到模块“鹰”
- r - tidyr:每个键收集两个值
- python - 如何将格式化为 unicode 的字符串转换为 unicode?
- python - 如何将未知的 Bigint 日期时间格式转换为日期时间
- java - 数组列表 Java
- python - 检测用户正在查看哪个立方体?
- angular - Angular Universal RxJs“Observable_1.Observable.throw 不是函数”
- mysql - 并非所有字符集和排序规则集都更改为 utf8mb4(.unicode.ci)