Mi última pregunta fue sobre eliminar todas las filas de una tabla que está resuelta. El problema que tengo ahora es cómo haría para eliminar una fila específica que tiene un botón de eliminación. Lo que estoy tratando de lograr es que cuando se hace clic en el botón, se elimina la fila en la que se encuentra el botón.
El problema que tengo ahora es que cuando presiono el botón Eliminar en la fila, elimina la primera fila de la tabla, que no es lo que quiero.
const [shop, setShop] = useState([]); .... function singleDelete(i){ var newArr = [...shop]; newArr.splice(i, 1); setShop(newArr); setCount(count -1); }Puedes usar Array.prototype.filter :
setShop(shop.filter((_, index) => index !== i)); Además, no mantenga una variable de count separada ya que es redundante. El recuento se puede recuperar fácilmente con shop.length .
Usando el filtro: setShop(shop.filter((_, shopIndex) = shopIndex !== i));
Ejemplo de trabajo creado aquí, puede usar este enlace de sandbox: https://codepen.io/naveenkumarpg/pen/GRvKpxM
para la referencia, puede tomar la identificación de la fila y eliminar el elemento.
remove = (rowId) => { // Array.prototype.filter returns new array // so we aren't mutating state here const arrayCopy = this.state.data.filter((row) => row.id !== rowId); this.setState({data: arrayCopy}); };