Как получить значения первого элемента ответа выборки

Я пытаюсь получить значения первого элемента моего запроса на выборку.

Здесь вы можете увидеть мой код -> результат запроса выборки присваивается переменной data.

const ListRezept = (props) => {
   const url_id = props.params.id;
   const [data, setData] = useState(null);
   const [isPending, setIsPending] = useState(true);
   const [error, setError] = useState(null);
  
   useEffect(() => {
    const abortCont = new AbortController();

    setTimeout(() => {
    fetch('https://abc.4.azurestaticapps.net/data-api/rest/Rezept?$filter=RezeptId eq '+ url_id)
       .then(res => {
          if (!res.ok) { // error coming back from server
            console.info("error");
            throw Error('Could not fetch the data for that resource!');
          } 
          return res.json();
       })
       .then(data => {
        setIsPending(false);
        setData(data.value);
        setError(null);
       })
       .catch(err => {
        if (err.name === 'AbortError') {
          console.info('fetch aborted')
        } else {
          // auto catches network / connection error
          setIsPending(false);
          setError(err.message);
        }
       });
 }, []);

     // abort the fetch
     return () => abortCont.abort();
 }, []) 
 }

Структуру возвращаемого data.value (после json()-парсинга) вы можете увидеть здесь структура разобранного data.value

Как я могу присвоить первый элемент возвращаемого значения «json()» переменной? Позже я хочу передать эту переменную «данные» на другую страницу и работать с этими значениями в Гэтсби.

Псевдокод:

// assign first element to a variable
const aenderungsdatum = data[0].aenderungsdatum

Добавьте информацию о структуре возвращаемого JSON.

Guido Flohr 19.04.2024 07:27

Я добавил структуру объекта data.value, проанализированного с помощью json(), в свой первоначальный вопрос;)

user23348508 19.04.2024 07:36

Какой код создает данные на вашем скриншоте? Кажется, у вас нет console.info() строк для этого, так откуда оно взялось? Я бы сказал, что хочешь setData(data.value.data)

Phil 19.04.2024 07:55

Данные на скриншоте получены с помощью console.info(json.value). Как вы думаете, в конце будут еще «данные»?

user23348508 19.04.2024 09:29

@ user23348508: Где у вас в коде стоит console.info(json.value)? Где вообще существует переменная с названием json? Структура, показанная на изображении, представляет собой объект со свойством data, и это свойство представляет собой массив. Итак, если это представление того, чем является json.value, вы можете использовать json.value.data[0] для доступа к первому элементу этого массива. В вашем коде есть несколько разных переменных, называемых data. Одному data присвоено значение свойства data другого value объекта. Возможно, вы запутались в именах переменных?

David 19.04.2024 14:01

извините... json последовал из ответа Гвидо Флор. Окончательное решение моего первоначального вопроса: const aenderungsdatum = data.data[0].Aenderungsdatum после setData(data.value);

user23348508 19.04.2024 20:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
6
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша проблема, видимо, в этом фрагменте кода:

       .then(data => {
        setIsPending(false);
        setData(data.value);
        setError(null);
       })

Третья строка должна быть setData(data.data.value). И станет понятнее, если вы переименуете параметр лямбда во что-то вроде json:

       .then(json => {
        setIsPending(false);
        setData(json.data.value);
        setError(null);
       })

Дополнительная проблема: у вашего объекта нет свойства value, как показано на скриншоте. Итак, окончательный код должен выглядеть так:

       .then(json => {
        setIsPending(false);
        setData(json.data);
        console.info(`last change: ${json.data[0]['Aenderungsdatum']`);
        setError(null);
       })

окей, я понял твою мысль. Но как получить первый элемент объекта «json»? В частности, как получить aenderungsdatum первого элемента моего объекта и установить для него переменную?

user23348508 19.04.2024 08:30

Другие вопросы по теме