You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native表单验证输入时触发Cannot read property 'value' of undefined如何解决

错误触发原因
  • React Native 框架中 TextInput 组件的 onChangeText 回调的返回值是用户输入的纯文本字符串,并非 Web 端 React 输入框的事件对象。你代码中使用的 e.target.value 是 Web 端的写法,此处的 e 本身就是输入的文本,不存在 target 属性,访问 e.target 会得到 undefined,读取 value 就会抛出对应错误。
  • 额外问题:你当前的确认密码输入框没有绑定状态更新和匹配校验逻辑,会导致后续提交时永远提示确认密码为空、密码不匹配校验失效。
修复步骤
  1. 修改邮箱输入框的 onChangeText 回调
    原代码:
onChangeText={(e) => this.setState({ textInputEmail: e.target.value })}

修改为:

onChangeText={(text) => this.setState({ textInputEmail: text })}
  1. 修改密码输入框的 onChangeText 回调
    原代码:
onChangeText={(e) => this.setState({ currentPassword: e.target.value })}

修改为:

onChangeText={(text) => this.setState({ currentPassword: text })}
  1. 补充确认密码输入框的绑定逻辑,给对应 TextInput 组件新增两个属性:
onChangeText={(text) => this.setState({ confirmTextInput: text })}
onEndEditing={(e) => this.isMatch(e.nativeEvent.text)}
  1. 优化密码匹配校验逻辑,原逻辑只有输入不匹配时会更新状态,匹配时无法恢复为正常状态,修改 isMatch 方法:
    原代码:
isMatch = (text) => {
    if (text != this.state.currentPassword) {
        this.setState({ isEqual: false })
    }
}

修改为:

isMatch = (text) => {
    this.setState({ isEqual: text === this.state.currentPassword })
}

内容的提问来源于stack exchange,提问作者Vladimir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 17:09:02