我有一个警告说
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>
感谢您的帮助!
答案 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是字符串。
你可以尝试一下。