Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

235
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!