【问题标题】:Failed prop type: Invalid prop 'value' of type 'object' supplied to 'TextInput' React Native道具类型失败:提供给“TextInput”React Native 的“对象”类型的无效道具“值”
【发布时间】:2017-12-23 00:52:38
【问题描述】:

我有以下 TextInput 组件:

<TextInput value={this.state.inputText}
  maxLength={1}
  onSubmitEditing={this.textHandler}
  onChangeText={(text) => this.setState({inputText: text})} />

当我将输入更改为 '' 并提交(在 TextInput 中)时,出现以下错误:“道具类型失败:提供给 'TextInput' 的“对象”类型的无效道具“值””

我尝试删除每个回调,显然,由于“onSubmitEditing”而引发了错误。

textHandler = (text) => {

  if(text == '' || text == '-' ){
    text = '0';
  }

  this.setState({inputText: text});
}

如何使回调仅在文本是字符串而不是对象的情况下被调用?

【问题讨论】:

    标签: javascript react-native textinput


    【解决方案1】:

    将您的 onSubmitEditing 更改为

    onSubmitEditing={(event) => this.textHandler( event.nativeEvent.text )}
    

    它是一个函数,你还没有向它传递值。如果你想通过可以从event获取它

    但是您使用了onChangeText,它将更新inputText,因此您只需要检查值是否存在。

    【讨论】:

    • 是的,它奏效了。非常感谢!顺便说一句,很好的解释:)。
    【解决方案2】:

    我也遇到过同样的问题。它通常发生无效或错误的组件或元素的道具类型。

    我的案例是&lt;TextInput onChangeText={}/&gt;,而不是&lt;TextInput onChange={}/&gt;。所以我遇到了这个问题。请先检查你的道具类型是对还是错。它对我有用。

    【讨论】:

    • 补充一下,如果使用onChange而不是onChangeText,传递的e参数是一个事件对象,而不是值
    • 是的,它通常默认参数是一个事件。那么?
    猜你喜欢
    • 1970-01-01
    • 2020-10-02
    • 2021-04-03
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多