我在react-native中引入了Texinput for Search。 以下是代码:
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时,我都会看到此警告:
&#34;警告失败道具类型无效道具&#39;值&#39;类型&#39;对象&#39;提供给TextInput,期望&#39;字符串&#39;&#34;
答案 0 :(得分:3)
您将值存储在this.state.value
中(或者至少看起来是您的意图),但是您将this.props.value
传递给TextInput。
如果你做打算将this.props.value
传递给TextInput,那么有助于知道传递给这个组件的内容(一级)。
答案 1 :(得分:0)
在某些情况下,当您尝试输入类型为Warning: Failed prop type: Invalid prop value of type number supplied to TextInput, expected string
而不是number
的值时,会出现您提到的错误或string
。
react-native的最佳做法是使用 String()
函数包装输入值,如下所示:
<TextInput
value={String(this.props.value)}
onChange = {this.props.onChange}
placeholder={"جستجو"}
blurOnSubmit={false}
style={{flex:0.9}}
returnKeyType="done"
/>
这是解决问题的方法:警告:道具类型失败:提供给“ TextInput”的类型为“数字”的道具“值”无效,预期为“字符串”。
答案 2 :(得分:0)
我在输入时遇到同样的错误,如果有人使用这样的功能组件,通过将 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>
</>
);
}