Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

122
Visualizações
Reaccionar solicitud PUT y GET axios en 1 función

Tengo 2 ganchos personalizados. 1 para PONER datos, el otro para OBTENER los datos. Necesito recuperar los datos inmediatamente después de que se hayan PUESTO para enrutar al usuario y manejar cualquier error. Con lo que tengo a continuación, las acciones suceden rápidamente y GET sucede antes que PUT. ¿Alguna forma de evitar esto?

 const { update, fetch, data, loading, success } = useFoo(data); const OnClickHandler = () => { update(); if (success === 200) { fetch(); // do some checks and if ok route } else { // do something else } }; const fetch = useCallback(() => { setLoading(true); axios({ url: url, headers: foo, method: "get" }) .then((response) => { setLoading(false); setSuccess(response.status); setData(response.data); }) .catch((error) => { setLoading(false); }); }, [setSuccess]); const update = useCallback(() => { setLoading(true); axios({ url: url, headers: foo, method: "put", data: data, responseType: "json" }) .then((response) => { setLoading(false); setSuccess(response.status); console.log(response); }) .catch((error) => { setLoading(false); }); }, [data]);
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si desea esperar el final de ciertas llamadas, debe marcar la función como asíncrona y esperar la llamada de función.

Traté de anticipar la estructura de su gancho useFoo() , y aquí están mis cambios:

 const useFoo = (data) => { const [ loading, setLoading ] = React.useState(false) const [ success, setSuccess ] = React.useState() const [ data, setData ] = React.useState() const [ error, setError ] = React.useState() const fetch = React.useCallback(async () => { setLoading(true) await axios({ url, // TODO: pass your url headers: {}, // TODO: pass your headers method: 'get' }) .then((response) => { setSuccess(response.status) setData(response.data) }) .catch((error) => { setError(error) }) .finally(() => setLoading(false)) }, [ setSuccess ]) const update = React.useCallback( async () => { setLoading(true) await axios({ url, // TODO: pass your url headers: {}, // TODO: pass your headers method: 'put', data, responseType: 'json' }) .then((response) => { setSuccess(response.status) }) .catch((error) => { setError(error) }) .finally(() => setLoading(false)) }, [ data ] ) return { data, fetch, loading, success, update, error } }

El componente que usa el gancho podría verse así:

 const YourComponent = () => { const { update, fetch, data, success } = useFoo(foo) const onClickHandler = async () => { await update() if (success === 200) { await fetch() // do some checks and if ok route } else { // do something else } } return null }

La palabra clave await obliga a la función a bloquearse hasta que finaliza la llamada a la función.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda