失败的道具类型无效道具'value'



我引入了一个用于搜索的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是设置为nullundefined)。

转换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>
          </>
        );
}

相关内容

  • 没有找到相关文章

最新更新