es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Borrando Elemento de la Base de Datos en React.

Tengo mi código donde listo todos los ítems de la base de datos y coloco un ícono al lado de cada ítem. Cuando hago clic en ese ícono, quiero que el ítem se elimine. ¿Cómo puedo hacer eso?

Esto es lo que parece en la parte frontal:

Acabo de empezar a aprender React y toda ayuda es bienvenida, me gustaría tener Axios.delete en mi función deleteButton() que elimina un elemento por su nombre.

Estoy usando react materials.

Mi código:

export default function ItemControl() {
  const [itemList, setItemList] = useState([]);
  useEffect(() => {
    getItems();
  }, []);

const url = "http://localhost:2000/appItem";

const getItems = () => {
    // Envío de solicitud GET HTTP
    Axios.get(url).then((response) => {
      const itemListItems = [];
      response.data.forEach((resItem) => {
        itemListItems.push(resItem.name);
      });
      setItemList(itemListItems);
    });
  };

const Demo = styled("div")(() => ({
    backgroundColor: "#f2f2f2",
  }));

const deleteButton = (itemName) => {
    console.log(itemName);
    let newList = itemList.filter((el) => el.itemName !== itemName);
    setItemList(newList);
  };
  return (
    <box sx="{{" flexgrow:="" 1,="" maxwidth:="" 752="" }}="">
      <grid container="" spacing="{2}">
        <grid item="" xs="{12}" md="{12}">
          <typography sx="{{" mt:="" 4,="" mb:="" 2="" }}="" variant="h6" component="div">
            Ítems
          </typography>
          <demo>
            <list>
              {itemList.map((li, index) => (
                <listitem secondaryaction="{"></listitem><iconbutton edge="end" aria-label="delete" onclick="{deleteButton}" id="name">
                      <deleteicon></deleteicon>
                    </iconbutton>
                  }
                  key={li.itemId}
                >
                  <listitemavatar>
                    <avatar>
                      <foldericon></foldericon>
                    </avatar>
                  </listitemavatar>
                  <listitemtext primary="{li}"></listitemtext>

              ))}
            </list>
          </demo>
        </grid>
      </grid>
    </box>
  );
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes usar Axios.delete en tu función deleteButton() para eliminar un ítem por su nombre. Para ello, necesitas pasar el nombre del ítem como un parámetro a la función deleteButton(). Puedes hacer esto agregando un atributo id al componente IconButton y estableciéndolo como el nombre del ítem.



    Luego, en la función deleteButton(), puedes acceder al nombre del ítem usando la propiedad event.target.id. Luego puedes usar este nombre del ítem para hacer una solicitud Axios.delete para eliminar el ítem de la base de datos.

    const deleteButton = (event) => {
      const itemName = event.target.id;
      console.log(itemName);
      let newList = itemList.filter((el) => el.itemName !== itemName);
      setItemList(newList);
    
      // Hacer solicitud Axios.delete aquí
      Axios.delete(url + '/' + itemName).then(response => {
        console.log(response);
      });
    };
    

Comments are closed.