类型错误:未定义不是本机反应中的对象(评估“_this.state.Place.trim”)

时间:2021-03-11 11:41:26

标签: forms react-native validation

我是本机反应的新手。我创建了一个表格。那工作正常。但是现在我在表单输入字段中存储了一些值作为默认值。(我从服务器获取这个值) 我像这样存储为默认值

onChangeText={this.handlePlace} value = {this.state.Place} defaultValue={placeD}  />

我像这样从服务器获取数据

 const placeD = data.retail_information_data[0] ? data.retail_information_data[0].name_of_place : ''

在提交时,我正在检查这样的输入验证

if (!this.state.Place.trim()) 
  {
    this.setState({ PlaceError: 'Field Should Not Be An Empty' })
    //alert(this.props.route.params.ltn2)
    return;
  }

现在的问题是当用户退出并以该形式再次出现时。那么假设用户只想编辑一个值,如名称。但是在我的情况下,当我只编辑一个值然后提交表单时,它会像这样抛出错误

TypeError: undefined is not an object (evaluating '_this.state.LegalName.trim') in react native

并且表单只会在我更改所有值时提交。但我希望如果用户只更改一个值,则还必须提交表单。

1 个答案:

答案 0 :(得分:0)

您不能只在表单上设置默认值而不为状态变量设置相同的值,因为您正在验证代码中检查它。例如:

const placeD = data.retail_information_data[0] ? data.retail_information_data[0].name_of_place : ''
this.setState({ Place: placeD })

您需要对表单中的所有字段执行此操作。