我引入了一个用于搜索的texInput。这是代码:
constructor(props){
super(props);
this.state = {
value : "",
items: [],
}
this.handleHeaderSearch = this.handleHeaderSearch.bind(this);
this.handleSearchBtn = this.handleSearchBtn.bind(this);
}
handleSearchBtn(){
}
handleHeaderSearch(){
if(!this.state.value) return;
}
和:
<TextInput
value={this.props.value}
onChange = {this.props.onChange}
placeholder={"جستجو"}
blurOnSubmit={false}
style={{flex:0.9}}
returnKeyType="done"
/>
每当我在输入文本输入后运行Android时,我会看到此警告:
"警告失败的prop类型无效的prop'value'type'对象'提供给文本输入,预期'字符串'
您正在将值存储在this.state.value
中(或至少是您的意图),但是您将this.props.value
传递给TextInput。
如果您 do 打算将this.props.value
传递给TextInput,则将有助于知道将要传递到此组件中的内容(一个级别)。
在某些情况下,当您尝试输入类型number
而不是string
时,您提到的错误或Warning: Failed prop type: Invalid prop value of type number supplied to TextInput, expected string
出现。反应的最佳实践是将输入值与 String()
函数这样包装:
<TextInput
value={String(this.props.value)}
onChange = {this.props.onChange}
placeholder={"جستجو"}
blurOnSubmit={false}
style={{flex:0.9}}
returnKeyType="done"
/>
这是您可以解决警告的方式:失败的道具类型:无效的prop" value"类型" number"提供给" textintup",预期的"字符串"。
在输入时我会遇到相同的错误,如果有人将usestate('')设置为空字符串对我有用(以防usestate是设置为null
或undefined
)。
转换value={String(text)}
对我不起作用,当我尝试将文本的值转换为字符串时,它在输入占位符中显示[object, object]
。
const HomeContainer = () => {
const [text, onChangeText] = useState(''); // Just set useState() to empty string ('')
return (
<>
<SafeAreaView>
<ScrollView styles={styles.scrollView}>
<Text style={styles.welcome}>Verify Faces</Text>
<Text></Text>
<View
style={[
styles.container,
{backgroundColor: COLORS.primaryLight}
]}>
<TextInput style={styles.input} value={text} onChange={onChangeText} placeholder='Enter your name' placeholderTextColor = "#000"/>
<TextInput style={styles.input} value={text} type='email' onChange={onChangeText} placeholder='Enter your email' placeholderTextColor = "#000"/>
</View>
<SimpleImagePicker />
</ScrollView>
</SafeAreaView>
</>
);
}