0

I am new in react and I don't know what happens when i try fetch cause infinite loop

const useDadosSolicitacao = (idSolicitacao: number) => {
  const [dadosSolicitacaoDevolucaoAmostra, setDadosSolicitacaoDevolucaoAmostra] = useState<IDadosSolicitacaoAmostra>();
  console.log('test');

  const obterDadosSolicitacao = async () => {
    return await DadosSolicitacaoService.obterDadosSolicitacaoDevolucao(1)
      .then((resposta) => {
        setDadosSolicitacaoDevolucaoAmostra(resposta.data);
      })
      .catch((error) => {
        if (error.response) {
          if (error.response.status === 404) {
            return null;
          }
          return { mensagem: error.response.message };
        }
      });
  };
  obterDadosSolicitacao();

this function (obterDadosSolicitacao) generates an infinite loop. But when I don't use response, nothing happens... like it:

const obterDadosSolicitacao = async () => {
    return await DadosSolicitacaoService.obterDadosSolicitacaoDevolucao(1);
}
obterDadosSolicitacao()
Patrick Roberts
  • 49,224
  • 10
  • 102
  • 153
Victor
  • 5
  • 1
  • 4
  • 1
    Does this answer your question? [React hook useEffect runs continuously forever/infinite loop](https://stackoverflow.com/questions/53243203/react-hook-useeffect-runs-continuously-forever-infinite-loop) – Patrick Roberts Mar 16 '23 at 12:47

1 Answers1

0
const useDadosSolicitacao = (idSolicitacao: number) => {
  const [dadosSolicitacaoDevolucaoAmostra, setDadosSolicitacaoDevolucaoAmostra] = useState<IDadosSolicitacaoAmostra>();
  console.log('test');

  const obterDadosSolicitacao = async () => {
    return await DadosSolicitacaoService.obterDadosSolicitacaoDevolucao(1)
      .then((resposta) => {
        setDadosSolicitacaoDevolucaoAmostra(resposta.data);
      })
      .catch((error) => {
        if (error.response) {
          if (error.response.status === 404) {
            return null;
          }
          return { mensagem: error.response.message };
        }
      });
  };
  // call it only once
  useEffect(() => {
    obterDadosSolicitacao();
  }, [])
Konrad
  • 21,590
  • 4
  • 28
  • 64