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

236
Vistas
¿Cómo configuro un estado y lo vuelvo al estado anterior?

En mi aplicación de reacción, tengo columnas que muestran datos en formato de cuadrícula, con dos vistas diferentes (seleccionando && la vista predeterminada) y cada columna tiene un controlador que se puede arrastrar y cambiar el tamaño del ancho. Cuando el usuario hace clic en el modo de selección, se agrega una casilla de verificación al frente de la matriz de columnas de objetos. ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Tengo una función que guarda para indicar el ancho de la columna después de que el usuario la cambia de tamaño, al índice correcto de la columna. (El usuario arrastra el controlador de la primera columna, guardará ese nuevo ancho en la columna indexada 0).

 overrideColumnWidth = (columnIndex, newWidth) => { this.setState({ columnWidthOverrides: { ...this.state.columnWidthOverrides, [columnIndex]: newWidth } });

También tengo una función que se parece a esta donde, si la cuadrícula está en modo de selección, crea un nuevo objeto que tiene valores establecidos en un índice incrementado, debido a que la casilla de verificación se agrega en el modo de selección y no desea que la columna de la casilla de verificación se transfiera el ancho modificado. Se mantiene un estado hecho para evitar que esta función se llame varias veces. Después de que mi estado columnWidthOverrides se verá como los dos ejemplos a continuación

 columnWidthOverrides = { 0: 400, 1: 500, 2: 600} columnWidthOverridesSelectMode = { 0: undefined, 1: 400, 2: 500, 3: 600} componentWillUpdate(nextProps) { if (nextProps.isSelecting && !this.state.done) { const { columnWidthOverrides } = this.state; const columnIndexes = Object.keys(columnWidthOverrides); const incrementedIndexes = columnIndexes.map((index) => ({ [`${Number(index) + 1}`]: columnWidthOverrides[Number(index)] })); const incrementedColumns = incrementedIndexes.reduce((map, columnWidthOverrides) => ({ ...map, ...columnWidthOverrides }),{}); this.setState({ done: !this.state.done, columnWidthOverrides: { ...incrementedColumns } }); }

}

Mi problema actualmente es que, aunque la vista de selección tendrá correctamente los anchos de columna correctos, una vez que el usuario cambia la cuadrícula de nuevo al modo no seleccionado, los anchos deben volver al estado anterior, por ejemplo. {0: 400, 1: 500, 2: 600}. ¿Hay alguna manera de revertir el estado a un estado anterior? Intenté volver a configurarlo en la función componentWillMount, pero provoca un bucle infinito y se llama a setstate varias veces para romper automáticamente la aplicación.

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Intente capturar el evento de cambio de modo: 'modo no seleccionado'

Luego ejecute una función para restaurar los valores del estado actual a los valores predeterminados.

Intente agregar 1 entrada al objeto:

 default: function(){ this.columnWidthOverrides = { 0: 400, 1: 500, 2: 600 } }

Luego, cuando el usuario cambie al modo no seleccionado, ejecute -

 this.default();
about 4 years ago · Santiago Gelvez 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