Я пытаюсь получить значения первого элемента моего запроса на выборку.
Здесь вы можете увидеть мой код -> результат запроса выборки присваивается переменной 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
Я добавил структуру объекта data.value, проанализированного с помощью json(), в свой первоначальный вопрос;)
Какой код создает данные на вашем скриншоте? Кажется, у вас нет console.info() строк для этого, так откуда оно взялось? Я бы сказал, что хочешь setData(data.value.data)
Данные на скриншоте получены с помощью console.info(json.value). Как вы думаете, в конце будут еще «данные»?
@ user23348508: Где у вас в коде стоит console.info(json.value)? Где вообще существует переменная с названием json? Структура, показанная на изображении, представляет собой объект со свойством data, и это свойство представляет собой массив. Итак, если это представление того, чем является json.value, вы можете использовать json.value.data[0] для доступа к первому элементу этого массива. В вашем коде есть несколько разных переменных, называемых data. Одному data присвоено значение свойства data другого value объекта. Возможно, вы запутались в именах переменных?
извините... json последовал из ответа Гвидо Флор. Окончательное решение моего первоначального вопроса: const aenderungsdatum = data.data[0].Aenderungsdatum после setData(data.value);



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваша проблема, видимо, в этом фрагменте кода:
.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 первого элемента моего объекта и установить для него переменную?
Добавьте информацию о структуре возвращаемого JSON.