React native 失败的道具类型:无效道具';键盘类型';价值的反应

React native 失败的道具类型:无效道具';键盘类型';价值的反应,react-native,React Native,我有一句警告的话 警告:失败的道具类型:提供给“TextInput”的值为“keyboardType”的道具无效,该值应为[“默认”、“电子邮件地址”等] 我试图做的是根据所选的下拉列表更改键盘类型 工作正常,但我仍然有这个错误。我不知道我做错了什么。我仍然是新的反应和反应,如果有人能帮助我解释事情是如何工作的,给我举个例子如何做,我将非常感激 这是我的密码 import ModalDropdown from 'react-native-modal-dropdown'; const type

我有一句警告的话

警告:失败的道具类型:提供给“TextInput”的值为“keyboardType”的道具无效,该值应为[“默认”、“电子邮件地址”等]

我试图做的是根据所选的
下拉列表更改
键盘类型

工作正常,但我仍然有这个错误。我不知道我做错了什么。我仍然是新的反应和反应,如果有人能帮助我解释事情是如何工作的,给我举个例子如何做,我将非常感激

这是我的密码

import ModalDropdown from 'react-native-modal-dropdown'; 

const types = ['Phone', 'Email Address', 'Name', 'Address'];
export default class SampleComponent extends Component{
 constructor(props) {
super(props);
this.state = {
  dataInput: '',
  typeOfKeyboard: '',
};
}

// this is how I set the state to be inputed in my `keyboardType` props 
 typeSelectedOnSelect(id, value) {

if(value== 'Phone'){
  this.setState({typeOfKeyboard: 'numeric'});
}else if(value== 'Email Address'){
  this.setState({typeOfKeyboard: 'email-address'});
}else{
  this.setState({typeOfKeyboard: 'default'});
}
}

render(){

 <View style={{flexDirection: 'column', flex: 1, padding: 20}}>
                  <Text style={styles.contactTypeText}>Contact Type</Text>
                  <ModalDropdown
                              options={types}
                              onSelect={this.contactTypeOnSelect.bind(this)}
                              style={styles.dropdownContainer}
                              dropdownStyle={styles.dropdownStyle}
                              textStyle= {styles.dropdownText}
                  />

   <TextInput label="Type anything" keyboardType={this.state.typeOfKeyboard}  onChangeText={(dataInput)=>this.setState({dataInput})} value={this.state.dataInput} />
                </View>
从“反应本机模态下拉列表”导入模态下拉列表;
常量类型=[“电话”、“电子邮件地址”、“姓名”、“地址”];
导出默认类SampleComponent扩展组件{
建造师(道具){
超级(道具);
此.state={
数据输入:“”,
键盘类型:“”,
};
}
//这就是我在“keyboardType”道具中设置要输入的状态的方式
类型SelectedOnSelect(id、值){
如果(值=‘电话’){
this.setState({typeOfKeyboard:'numeric'});
}else if(值==“电子邮件地址”){
this.setState({typeOfKeyboard:'email address'});
}否则{
this.setState({typeOfKeyboard:'default'});
}
}
render(){
接触式
this.setState({dataInput})值={this.state.dataInput}/>

谢谢您的帮助!

因为您的
键盘类型的初始状态为空

将其更改为:“default”或将其传递为null。 从

键盘类型?:枚举('默认','电子邮件地址','数字', “电话板”、“支持ascii”、“数字和标点符号”、“url”, “数字键盘”、“姓名电话键盘”、“十进制键盘”、“twitter”, “网络搜索”

确定要打开的键盘,例如数字键盘

以下值跨平台工作:

默认数字电子邮件地址电话键盘


“?”表示不需要

我想你应该使用
keyboardType=this.state.typeOfKeyboard
而不是
keyboardType={this.state.typeOfKeyboard}
,因为{some expression}是一个对象,而this.state.typeOfKeyboard是字符串。
你可以试一试。

谢谢你给我澄清。我不再收到警告。太好了:)。很高兴我能帮上忙!使用{}和仅使用this.state有什么区别?在回答问题之前,请知道你在说什么。它不是对象,而是JSX输出数据的方式。就像在angular中一样:{}。很抱歉让您感到困惑,但您可以在浏览器中尝试一下:
“a”
相当于
{'a'}
,但是当您在
{}
中放置变量时,它们是不等价的,例如:
a=“1”
,typeof(a)不等同于typeof({a})。@WilomGfx您不应该标记我的答案是无用的==“a一旦React呈现了“a”,它就相当于{“a”},事实上,事先不是这样。Doing const potato='a big potato',在render方法中Doing{potato}将输出:'a big potato'。