道具类型失败:提供给“TextInput”React Native 的“对象”类型的无效道具“值”

Posted

技术标签:

【中文标题】道具类型失败:提供给“TextInput”React Native 的“对象”类型的无效道具“值”【英文标题】:Failed prop type: Invalid prop 'value' of type 'object' supplied to '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);

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

【问题讨论】:

【参考方案1】:

将您的 onSubmitEditing 更改为

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

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

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

【讨论】:

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

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

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

【讨论】:

补充一下,如果使用onChange而不是onChangeText,传递的e参数是一个事件对象,而不是值 是的,它通常默认参数是一个事件。那么?

以上是关于道具类型失败:提供给“TextInput”React Native 的“对象”类型的无效道具“值”的主要内容,如果未能解决你的问题,请参考以下文章

React Native错误失败的道具类型:提供给`Overlay`的`array`类型的无效道具`children`,

道具类型失败:“object”类型的道具“defaultValue”无效

通过 containerElement 道具将 NavLink 传递给 Material UI 组件会给出“道具类型失败”警告

反应错误'失败的propType:提供给'Provider'的无效道具'children',需要一个ReactElement'

React styled-component 不传递道具

Typescript 和 React:使用 React.Component 和条件类型化道具时类型推断失败