Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

267
Vistas
¿Cómo devolver los valores antiguos al hacer clic en el icono de descartar (cerrar) mientras se edita un registro de tabla de material-ui?

¿Además de cómo editar una fila en particular en la tabla material-ui? , cada vez que hago clic en el ícono X mientras edito una fila, los cambios aún se reflejan en la tabla. ¿Hay alguna forma de superarlo? El registro editado solo debe guardarse en el icono de verificación (_/). Estoy completamente en blanco en esto ahora.

Zona de juegos: https://codesandbox.io/s/material-ui-editable-tables-wsp0c?file=/package.json:0-677

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El problema está en su método onToggleEditMode . Está conservando bien el valor anterior durante el controlador onChange , y está reemplazando el valor temporal con el anterior durante el controlador onRevert correctamente. Sin embargo, en ese controlador onRevert , actualiza el estado de las filas con setRows y luego llama a la función onToggleEditMode directamente después, que aún hace referencia al objeto de estado de las filas obsoletas.

 const onToggleEditMode = id => { setRows(state => { return rows.map(row => { if (row.id === id) { return { ...row, isEditMode: !row.isEditMode }; } return row; }); }); };

Debe usar ese parámetro de state en la segunda línea para no anular el nuevo valor que acaba de guardar y crear una condición de carrera. Actualicé el método a lo siguiente (también limpié el método del mapa de filas) y funcionó en la zona de pruebas:

 const onToggleEditMode = (id) => { setRows((state) => state.map((row) => ({ ...row, isEditMode: row.id === id ? !row.isEditMode : row.isEditMode })) ); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

El ejemplo que proporcionaste muestra que onChange() anula las filas:

 setRows(newRows);

Mi sugerencia sería crear una copia preliminar de la fila editada (ya que solo se puede editar una al mismo tiempo). Luego, sobrescriba los datos reales con el borrador si hace clic en "aprobar"; de lo contrario, no haga nada. El comportamiento que describe es realmente solo la lógica personalizada en el código, no hay nada específico de MUI al respecto. Aprenderá mejor cómo hacerlo si lo hace por su cuenta. Sin embargo, puedo verificar tu ejemplo.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda