javascript - React Native:iOS 听写无法清除文本输入
问题描述
我在用于编写和发送消息的 React Native 应用程序中有一个非常基本的 TextInput + Button 组合,如下所示:
<TextInput
type="text"
ref={input => {
this.inputRef = input;
}}
style={styles.userInput}
name="userInput"
autoCorrect={false}
placeholder="Type something..."
autoFocus={false}
autoComplete="off"
onChangeText={this.watchInput}
returnKeyType="done"
/>
<Button
disabled={!this.state.isValidInput}
style={styles.sendButton}
title="Send"
textStyle={{fontSize: 12}}
onPress={this.handleSubmit}
accessibilityLabel="Press this button to send your message"
/>
当按下 Button 时,我使用 handleSubmit 函数来处理输入字段的消息发送和重置,如下所示:
handleSubmit = async () => {
const message = this.state.input; // get input from state
Keyboard.dismiss() // hide keyboard
this.inputRef.clear(); // clear TextInput
this.setState({ input: '' }); // reset input state
this.setState({ isValidInput: false }); // reset input state
this.stretchInputField()
var r = await this.props.myAwesomeSendMessageFunction() // send message
}
这在使用实际的 Button 进行发送时效果很好,但是如果我在 iOS 键盘中使用听写,它会在我说完后发送消息,但输入字段没有被清除,所以我只剩下处理程序已发送的字段中的相同输入。
任何想法为什么它与听写一样工作以及如何让它在发送时清除输入字段?
反应原生版本 0.57.8
解决方案
您是否在文本输入中绑定了您的值?
尝试在文本输入中绑定您的输入,例如 value ={this.state.input}
推荐阅读
- javascript - 如何使用 Vue.js 在另一个函数中添加一个函数
- eclipse - 如何将 JavaFx 项目转换为 Gradle 项目?
- php - 使用 php 将 ajax 数据表保存回数据库
- c# - 在 await Task.WhenAll() 中隔离异常
- python - 使用 PyCharm 进行零件调试?
- android-layout - 具有固定宽度但高度的 ImageView 的滑动缩略图 wrap_content
- java - 在父活动下打开片段
- python - 如何在熊猫数据框中实现类似 sumifs 功能
- html - 如何让 SVG 元素扩展以填充容器的宽度,同时保持纵横比
- openstack - JQ 交叉引用或如何用输入的另一部分替换一个值