@Boris007

Почему useLoaderData возвращает не Response, а уже сами данные?

Помещаю в Loaderэту функцию
В ней в thenпоказан объект Response
async function getUsers() {
  console.log('function getUsers')
  return fetch('http://localhost:3000/api/v1/users, {
    method: 'POST',
  })
  .then(data => {
    return data
  })
  .catch(() => null)
}


Но в компоненте при получении этих данных
const data = useLoaderData() as any
Почему-то dataуже не объект Response, а сами данные, будто я до этого сделал
.then(data => {
    return data.json()
  })


Как мне в useLoaderData() получать Response?
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
ilyabond
@ilyabond
В яме даннинга крюгера
Об этом написано в документации React Router: тут

React Router автоматически вызовет response.json(), поэтому вашим компонентам не нужно будет анализировать его во время рендеринга


Конечно, можно сделать так, но не думаю что это хорошее решение:

async () => {
        const response = await fetch("https://jsonplaceholder.typicode.com/users")/
        return { response };
}

const { response } = useLoaderData();

Извините, а зачем вам получать объект Response в компоненте?

P.s. И ещё: если поставили async перед функций, то используйте синтаксис async/await, с промисами в этом нет смысла
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы