Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Quando tento atualizar o produto(PUT) aparece Error no Axios(CRUD)

export type ListProdutos = {
    id: number;
    Quantidade: string;
    QMinima: string;
    Valor: string;
    Marca: string;
    Ação?: string;
    nome?: string;
    Descricao: string;
    Image: string;
    isCompleted?: boolean;
}

Código principal:

import React, { useEffect } from "react";
import { useNavigate, useParams  } from "react-router-dom";
import { Header } from "../../../Components/layout/Header";
import { ListProdutos } from "../../../service/api";
import axios from "axios";
import { useForm } from "react-hook-form";

export const EditProduto = () => {
    const navigate = useNavigate();
    const { id } = useParams();
    const  {register, handleSubmit, formState: {errors}, reset } = useForm<ListProdutos>()

    const onUpdate = ((data: any) =>  {
        axios.put(`http://localhost:3333/produtos/Edit-Produto/${id}`, data)
        .then(() => {
            alert("Deu certo!");
            navigate('/lista-produtos');
        })
        .catch((e) => {
            alert("Deu errado!");
            console.log('Error:', e)
        })
        console.log(onUpdate);
    })

    useEffect(() => {
        axios.get(`http://localhost:3333/produtos/${id}`)
        .then((response) => {
            reset(response.data);
        })
        .catch(()=> {
            alert("ERRRRRRROR!")
        })
    }, [id]);


        return(
        <>
            <Header />


        <form onSubmit={handleSubmit(onUpdate)}>
                <label htmlFor="quan">
                    <span>Quantidade</span>
                <input 
                    id="quan"
                    type='number'
                    {...register("Quantidade",{required: true})}
                />
                {errors.Quantidade && (<div>Quantidade não preenchida</div>)}
                </label>
                <label htmlFor="qmin">
                    <span>Q-Minima</span>
                <input 
                    id="qmin"
                    type='number'
                    {...register("QMinima",{required: true})}
                />
                {errors.QMinima && (<div>Quantidade Minima  não preenchida</div>)}
                </label>

                <label htmlFor="valor">
                    <span>Valor</span>
                <input 
                    id="valor"
                    type='number'
                    {...register("Valor",{required: true})}
                />
                {errors.Valor && (<div>Valor não preenchida</div>)}
                </label>

                <label htmlFor="marca">
                    <span>Marca</span>
                <input 
                    id="nmarca"
                    type='text'
                    {...register("Marca",{required: true})}
                />
                {errors.Marca && (<div>Marca não preenchida</div>)}
                </label>

                <label htmlFor="name">
                    <span>Nome Produto</span>
                <input 
                    id="name"
                    type='text'
                    {...register("nome",{required: true})}
                />
                {errors.nome && (<div>Nome não preenchida</div>)}
                </label>

                <label htmlFor="desc">
                    <span>Descrição</span>
                <textarea 
                {...register("Descricao",{required: true})} 
                id="desc"></textarea>
                {errors.Descricao && (<div>Descrição não preenchida</div>)}
                </label>

                <label htmlFor="img">
                    <span>Imagem</span>
                <input 
                    id="img"
                    type='file'
                    {...register("Image")}
                />
                {errors.Image && (<div>Image não preenchida</div>)}
                </label>

            <button type="submit" >
                Atualizar
            </button>
        </form> 


        </>
    )
}

#React

1 resposta
solução!

Oi Antônio, tudo bem?

Pelo código que você compartilhou, parece que você está tentando atualizar um produto usando um método PUT e o Axios para fazer a chamada à API. No entanto, quando você tenta atualizar o produto, está recebendo um erro no Axios.

Algumas coisas que você pode verificar para resolver esse problema são:

  1. Verifique a URL da sua API Certifique-se de que a URL que você está usando para fazer a chamada à API esteja correta e que esteja apontando para o endpoint correto. No seu código, você está usando a URL http://localhost:3333/produtos/Edit-Produto/${id} para atualizar o produto. Certifique-se de que este endpoint exista e esteja configurado corretamente.

  2. Verifique a estrutura dos dados enviados Certifique-se de que os dados que você está enviando na sua requisição estejam corretamente estruturados e formatados. No seu código, você está enviando os dados do formulário que foram capturados pelo handleSubmit do react-hook-form. Certifique-se de que esses dados estejam no formato esperado pelo endpoint da API.

  3. Verifique se a API está respondendo corretamente Certifique-se de que a API esteja respondendo corretamente e que esteja devolvendo uma resposta que possa ser processada pelo Axios. Se a API estiver retornando um erro, o Axios não será capaz de processar a resposta e você receberá um erro.

Aqui está um exemplo de como você pode lidar com os erros no Axios:

axios.put(`http://localhost:3333/produtos/Edit-Produto/${id}`, data)
  .then(() => {
    alert("Deu certo!");
    navigate('/lista-produtos');
  })
  .catch((error) => {
    alert("Deu errado!");
    console.log('Error:', error.response.data)
  })

Nesse exemplo, estamos adicionando um catch ao final da chamada ao Axios para lidar com quaisquer erros que possam ocorrer. Se ocorrer um erro, estamos imprimindo o erro no console para depuração e exibindo uma mensagem de erro na tela para o usuário.

Espero que essas dicas possam ajudá-lo a resolver o erro que você está tendo ao atualizar o produto. Lembre-se de sempre verificar a documentação da API e depurar o código para encontrar a causa raiz do problema.

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software