Использование API в React Native

#javascript #reactjs #react-native #api

Вопрос:

Я новичок в React Native, и я хотел создать простое приложение с использованием API Marvel, и для этого я использую оболочку API. Я хочу отобразить бесконечный вид прокрутки с помощью VirtualizedList. И вот вопрос: что передать в renderItem и компонентах данных? И хорошо ли написана константа «findCharacters» или я должен что-то изменить? И, наконец, должен ли я изменить VirtualizedList на FlatList или ScrollView? Мой код приведен ниже

    const findCharacters = marvel.characters.findAll()
  .then(console.log)
  .fail(console.error)
  .done();


  return (
    <View style={styles.container}>
      <VirtualizedList
      data={/* what to pass here? */}
      renderItem={/* what to pass here? */} />
    </View>
  );
}
 

Ответ №1:

Это хорошая идея использовать значимые имена переменных, в вашем случае что-то вроде getMarvelCharacters звучит хорошо.

Ответ API выдает JSON data , содержащий массив объектов персонажей marvel. Передайте это в data параметр VirtualizedList.

Что касается renderItem реквизита, то в основном речь идет о том, как вы хотите визуализировать каждый из объектов, data то есть персонажей marvel. Прочитайте полную документацию по VirtualizedList здесь.

Таким образом, весь код может быть примерно таким.

 const [marvelCharacters, setMarvelCharacters] = useState([]);

const getMarvelCharacters = marvel.characters.findAll()
  .then((err, results) => {
    setMarvelCharacters(results.data);
  })
  .fail(console.error)
  .done();

useEffect(() => {
  getMarvelCharacters();
}, []);

const CharacterItem = ({ title }) => (
  <View>
    <Text>{title}</Text>
  </View>
);

return (
    <View style={styles.container}>
      <VirtualizedList
      data={marvelCharacters}
      renderItem={({ item }) => <CharacterItem title={item.title}/>} />}
    </View>
  );