我是本机反应的新手。我试图在单击“提交”按钮时验证文本字段。但是我总是会出错-

TypeError:未定义不是我的模拟器上的对象(正在评估“ props.deviceLocale”)。

(我正在使用Android模拟器)。

但是我在代码中无处使用'deviceLocale'。我不知道我的代码中是否需要它。

这是我的代码:

import React, {Component} from 'react';
import { View, Text, TouchableOpacity, TextInput } from 'react-native';
import ValidationComponent from 'react-native-form-validator';

export default class App extends ValidationComponent {

  constructor() {
    super()
    this.state = {
      name: "abc"
    }
  }

  _onPressButton() {
    this.validate({
      name: {minlength: 3, maxlength: 7, required: true},
    });
  }

  render() {
    return (

      <View>

        <TextInput
          ref = "name"
          onChangeText = {(name) => this.setState({name})}
          value = {this.state.name}
        />

        <TouchableOpacity onPress = {this._onPressButton}>
          <Text>Submit</Text>
        </TouchableOpacity>

      </View>
    )
  }
}


Error snap

谁能帮我这个忙吗?

最佳答案

您甚至在加载组件之前就收到了错误,然后正确地绑定了您的_onPressButton,然后至少正确地安装了您的组件,然后接下来的错误就会出现,就像对this.validate的使用对我来说有点模棱两可我在组件中看不到validate函数。

要绑定您的_onPressed,请如下声明:

_onPressButton = () => {
  this.validate({
    name: {minlength: 3, maxlength: 7, required: true},
  });
}


该错误是由于在安装组件后立即调用_onPressed而引起的。请在评论中让我知道,这是否可以帮助您至少成功地进行组件安装。

编辑:
另外,您的构造函数不会为超级构造函数提供支持,

像下面这样声明:

 constructor(props) {
   super(props);
   this.state = {
     name: "abc"
   }
 }


希望这可以帮助。编码愉快。

关于android - '未定义不是对象(评估'props.deviceLocale'),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55358842/

10-13 00:53