失败的道具类型:无效道具'keyboardType'的值 - ReactNative

时间:2017-04-05 02:17:22

标签: react-native

我有一个警告说

Warning: Failed prop type: Invalid prop 'keyboardType' of value "supplied to 'TextInput' expected one of ["default", "email-address", etc]

我要做的是根据所选的keyboardType更改dropdown

工作正常,但我仍然一直有这个错误。我不知道我做错了什么。我还是React和ReactNative的新手,如果有人可以帮我解释一下如何工作并给我示例如何做,那将非常感激。

这是我的代码

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>

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

因为typeOfKeyboard的初始状态为空。

将其更改为:'default'或将其传递为null。 来自docs

  

keyboardType?:enum('default','email-address','numeric',   'phone-pad','ascii-capable','number-and-punctuation','url',   'number-pad','name-phone-pad','decimal-pad','twitter',   '网络搜索')

     

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

     

以下值适用于各个平台:

     

默认数字电子邮件地址电话簿

'?'表示不需要

答案 1 :(得分:-1)

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