处理Vega密码字段中的onSubmitEditing事件
在本文中,您将向密码TextInput组件添加提交操作筛选以防止意外行为。onSubmitEditing() 回调会触发多个键盘操作,包括显示和隐藏密码切换。如果不检查哪个操作触发了回调,则当用户仅切换密码可见性时,您的业务逻辑(例如连接到网络)可能会执行。
先决条件
确定您的应用是否受到影响
如果满足以下两个条件,则您的应用需要此修复:
- 您使用
TextInput组件,将keyboardType设置为password,并在键盘用户界面中显示/隐藏密码按钮。 - 您在不检查
e.nativeEvent.submitAction的值的情况下处理onSubmitEditing()。
例如,以下代码触发任何提交操作的密码处理程序,包括显示和隐藏密码切换。
<TextInput
placeholder='密码的占位符文本'
keyboardType='password'
returnKeyType='done'
onSubmitEditing={(e) => {
console.log("密码 - " + e.nativeEvent.text);
}}
/>
添加submitAction检查
在运行业务逻辑之前,通过检查e.nativeEvent.submitAction来筛选 onSubmitEditing() 回调。这样可以确保只有预期的操作(例如“完成”)才能触发您的代码。
<TextInput
placeholder='密码的占位符文本'
keyboardType='password'
returnKeyType='done'
onSubmitEditing={(e) => {
if(e.nativeEvent.submitAction === 'done') {
console.log("密码 - " + e.nativeEvent.text);
}
}}
/>
处理其他submitAction值
除了“完成”,您可能还想回复其他提交操作。submitAction值对应于returnKeyType值加上使用auxOptions设置的自定义值。以下示例说明如何在完成操作的同时处理密码可见性切换。
<TextInput
placeholder='密码的占位符文本'
keyboardType='password'
returnKeyType='done'
onSubmitEditing={(e) => {
if(e.nativeEvent.submitAction === 'done') {
console.log("密码 - " + e.nativeEvent.text);
} else if (e.nativeEvent.submitAction === 'show_password') {
console.log("密码现在可见");
} else if(e.nativeEvent.submitAction === 'hide_password') {
console.log("密码现已隐藏");
}
}}
/>
其他可能的submitAction值包括“go”、“search”、“next” “previous”。
相关内容
Last updated: 2026年4月15日

