Ошибка панели поиска React Native: Сбой тип реквизита: Недопустимое значение реквизита типа `массив`, переданное в » forwardRef(TextInput)», ожидаемая `строка`

#javascript #reactjs #react-native

Вопрос:

Я понятия не имею, что означает эта ошибка. Некоторое время назад все работало нормально, и я не трогал этот код. Я вернулся на эту страницу и получил эту ошибку:

 Failed prop type: Invalid prop `value` of type `array` supplied to `ForwardRef(TextInput)`, expected `string`
 

Это должно быть как-то связано с панелью поиска, но я понятия не имею, что именно.

 import React, { useEffect, useState } from 'react';
import { View, Text, FlatList, SafeAreaView, Image } from 'react-native';
import { Card, SearchBar } from 'react-native-elements'
import { styles } from './styles.js';

const FormsScreen = ({navigation, route}) => {

  const [formsArray, setFormsArray] = useState([]);
  const [search, setSearch] = useState([null]);
  
  //Fetch all users from database
  useEffect(() =>{
    fetch('http://10.0.2.2:5000/forms').then(response =>{
      if(response.ok){
        return response.json();
      }
    }).then(data => setFormsArray(data));
  }, []);


  return (

      <SafeAreaView>
        <SearchBar
        placeholder="Type Here..."
        onChangeText={ (text) => {setSearch({text}); } }
        value={search}
      />
   
        <FlatList 
        keyExtractor={(item) => item.ID.toString() }
        // style = {styles.List}
        data={formsArray}
        renderItem={({item}) => (
          <Card>
            <Card.Title>{item.ID}</Card.Title>
            <Card.Divider/>
            <View style={styles.Container}>
              <Text>{item.Comments}</Text>
              {/* <Image source={require('./System apps/Media Manager/Gallery/AppPhotos/45e5cefd-7798-4fe9-88de-86a0a15b7b9f.jpg')} /> */}
              <Text>{item.RoadName}</Text>
            </View>

            <View style={styles.ListContainer}>
              <Text style={styles.LabelText}>Name</Text>
              <Text style={styles.LabelText}>Phone</Text>
              <Text style={styles.LabelText}>Email</Text>
            </View>
            <View style={styles.ListContainer}>
              <Text style={styles.CardText}>{item.Name}</Text>
              <Text style={styles.CardText}>{item.Phone}</Text>
              <Text style={styles.CardText}>{item.Email}</Text>
            </View>
          </Card>
        )}
        />
     </SafeAreaView>

  );
}

export default FormsScreen;

 

Что именно здесь происходит?

Ответ №1:

попробуй вот так

 const [search, setSearch] = useState({text: ''});



<SearchBar
        placeholder="Type Here..."
        onChangeText={ (text) => {setSearch({text}); } }
        value={search.text}
      /> 

Комментарии:

1. По какой-то причине мой проект потерял файл цветов, поэтому я не могу запустить свое приложение прямо сейчас. Я попробую это сделать, как только все исправлю.