【发布时间】:2019-11-14 22:27:19
【问题描述】:
在我的 React 应用程序中,我有以下代码:
...
handleChange(event) {
let chunkedText = []
this.setState({value: event.target.value});
let text = event.target.value
...
//store the text in local storage with the key 'tweet'
window.localStorage.setItem('tweet', text);
...
componentDidMount() {
//once the component loads check local storage and update the value if it exists
if(window.localStorage.getItem('tweet')) {
this.setState({value: window.localStorage.getItem('tweet')});
}
}
render() {
return (
<div>
<form>
<label>
<textarea
placeholder="Begin typing your tweet here..."
rows="14" cols="50" value={this.state.value}
onChange={this.handleChange}
/>
</label>
</form>
{this.state.length > 0 ? <span>{this.state.length} Chars || {this.state.count} Tweets</span> : ''}
</div>
);
}
}
在 componentDidMount 中注意,我们正在从本地存储中提取一些文本并设置状态。理想情况下,在此之后(在 componentDidMount 中)我想运行 handleChange。这样做的正确方法是什么?
【问题讨论】:
-
初始化状态时可以从本地存储中提取状态,这取决于您要实现的目标
-
您不能只将
value传递给onChange而不是event对象吗?这样您就可以从componentDidMount像this.handleChange(tweet)和从内部render调用它:e => this.handleChange(e.target.value)
标签: reactjs