道具类型失败:提供给“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】:我也遇到过同样的问题。它通常发生无效或错误的组件或元素的道具类型。
我的案例是<TextInput onChangeText=/>
,而不是<TextInput onChange=/>
。所以我遇到了这个问题。请先检查你的道具类型是对还是错。它对我有用。
【讨论】:
补充一下,如果使用onChange
而不是onChangeText
,传递的e参数是一个事件对象,而不是值
是的,它通常默认参数是一个事件。那么?以上是关于道具类型失败:提供给“TextInput”React Native 的“对象”类型的无效道具“值”的主要内容,如果未能解决你的问题,请参考以下文章
React Native错误失败的道具类型:提供给`Overlay`的`array`类型的无效道具`children`,
道具类型失败:“object”类型的道具“defaultValue”无效
通过 containerElement 道具将 NavLink 传递给 Material UI 组件会给出“道具类型失败”警告
反应错误'失败的propType:提供给'Provider'的无效道具'children',需要一个ReactElement'