react-native - 如何使 React Native TextInput 在屏幕更改后保留文本
问题描述
我正在制作一个包含注释字段的应用程序,该字段需要在屏幕更改后保留其输入,但在您离开页面后它总是会重置。这是我的状态构造函数:
this.state = {text: ""};
还有我的 textinput 声明:
<TextInput
style={{
height: 200,
width: 250,
fontSize: 15,
backgroundColor: 'white',
}}
editable = {true}
multiline = {true}
numberofLines = {4}
onChangeText={(text) => this.setState({text})}
value={this.state.text}
/>
我一直在尝试找到一种方法将状态设置为在打开页面时不会重新初始化但到目前为止没有运气的变量。任何意见,将不胜感激!
解决方案
用于AsyncStorage
持久化输入值。例如:
<TextInput
style={{
height: 200,
width: 250,
fontSize: 15,
backgroundColor: 'white',
}}
editable = {true}
multiline = {true}
numberofLines = {4}
onChangeText={(text) => {
this.setState({text});
AsyncStorage.setItem('inputKey', text); // Note: persist input
}}
value={this.state.text}
/>
然后在 componentDidMount 中,您可以检查该值并相应地更新状态以使用旧值重新初始化。
componentDidMount() {
AsyncStorage.getItem('inputKey').then((value) => {
if (value !== null){
// saved input is available
this.setState({ text: value }); // Note: update state with last entered value
}
}).done();
}
推荐阅读
- javascript - 在 TypeScript 中进行子类化并使用更具体的属性或方法
- docker - Cloud Run 错误:容器无法启动。在不暴露 PORT 或 URL 的情况下运行后台任务
- pandas - 绘制图表时没有发现带有标签的句柄会出现图例错误
- ffmpeg - 如何使用 ffmpeg 将一组 PPM 文件转换为单个 .mp4 视频
- html - Outlook 电子邮件模板填充/边距减去不起作用
- go - 如何在 go echo 中传递中间件和处理程序周围的对象?
- visual-studio-code - gulp 任务 - 如何在 launch.json 中创建“config”对象
- firebase - Flutter Firebase:我应该使用服务器向我的用户发送通知吗?
- c# - 在具有种子实体的表中添加数据后出现重复键错误
- ios - 如何在两个 UICollectionViewCells 之间添加一个视图?