@user1805273649

React Native — JSON. Как получить значение через API не списком?

React Native (17.0.2) чистый, без axios и т.п., пытаюсь сделать c помощью fetch.

Сам JSON пример
{
  "response":"success",
  "value":{
    "name":"test",
    "text":"test"
  },
  "list": [
    { "id": "1", "title": "test", "releaseYear": "1977" },
    { "id": "2", "title": "test", "releaseYear": "1977" }
  ]
}


React Native

import React, { useEffect, useState } from 'react';
import { ActivityIndicator, FlatList, Text, View } from 'react-native';

export default App = () => {
  const [isLoading, setLoading] = useState(true);
  const [data, setData] = useState([]);

  const getMovies = async () => {
     try {
      const response = await fetch('https://you_site.com/test.json');
      const json = await response.json();
      setData(json.movies);
    } catch (error) {
      console.error(error);
    } finally {
      setLoading(false);
    }
  }

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

  return (
    <View style={{ flex: 1, padding: 24 }}>

    {/* Тут нужно отобразить value->name */}

      {isLoading ? <ActivityIndicator/> : (
        <FlatList
          data={data}
          keyExtractor={({ id }, index) => id}
          renderItem={({ item }) => (
            <Text>{item.title}, {item.releaseYear}</Text>
          )}
        />
      )}
    </View>
  );
};


Выводит только список из массива list, всё работает как нужно.

Но как мне вывести и отобразить значение name из объекта value сразу после
<View style={{ flex: 1, padding: 24 }}> один раз перед всем списком (т.е. отобразить test)?
  • Вопрос задан
  • 319 просмотров
Пригласить эксперта
Ответы на вопрос 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
setData(json.movies);
Переименуйте setData в setMovies и добавьте по аналогии с ним стейт для value.

Либо в setData передавайте весь json, а не только список. Но тогда придётся весь остальной код адаптировать под новый формат state.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы