Вызов React-Asyn c выполняется позже с GET-запросом на useFetch - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь запустить запрос на выборку позже, используя useFetch из библиотеки React-Asyn c. Я хотел бы использовать его в качестве эффекта.

import React, {useEffect} from 'react';
import { useFetch } from "react-async"

const Example = (props) => {
  const headers = { Accept: "application/json" }
  const { data, error, isPending, run } = useFetch("http://www.mocky.io/v2/5eac28e4330000a215dfe24d",{ method: "POST", headers });

  useEffect(() => {
    // token = await retrieveToken;
    run(init => ({
      ...init,
      headers: {
        ...init.headers,
        Authentication: "thetoken",
      },
    }))
  },[]);


  if (isPending) return <div>Loading</div>
  if (error) return <div>`Something went wrong: ${error.message}`</div>
  if (data)
    return (
      <div>
        {JSON.stringify(data)}
      </div>
    );
  else {
    return <div>Loading</div>
  }
}
export default Example;

Вызов выборки запускается сразу и не действует. Когда я меняю метод на POST, вызывается выборка из ожидаемого эффекта.

Как я могу заставить его работать для запроса GET?

1 Ответ

1 голос
/ 01 мая 2020

Reaction-Asyn c useFetch принимает в качестве параметра параметры в качестве третьего параметра. Этот объект параметров принимает параметр defer, который откладывает выполнение, если установлено значение true. По умолчанию это определяется методом запроса

AS согласно документации

defer Включает использование deferFn если true, или разрешает использование promiseFn, если false. По умолчанию это выбирается автоматически в зависимости от метода запроса (deferFn для POST / PUT / PATCH / DELETE, в противном случае - promiseFn).

Используйте ваш метод useFetch, например

const { data, error, isPending, run } = useFetch("http://www.mocky.io/v2/5eac28e4330000a215dfe24d",
                                        { method: "GET", headers }, 
                                        {defer: true}
                                       );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...