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

354
Vistas
Un componente está cambiando el estado marcado no controlado de SwitchBase para ser controlado. Los elementos no deben cambiar de no controlados a controlados

Tengo una casilla de verificación MUI:

 <Checkbox checked={rowValues[row.id]} onChange={() => { const temp = { ...rowValues, [row.id]: !rowValues[row.id] }; setRowValues(temp); }} inputProps={{ 'aria-label': 'controlled' }} />

y hay un botón seleccionar todo

 <Button onClick={async () => { isAllSelected = !isAllSelected; const tmp = await setAllValues(isAllSelected); setRowValues(tmp); }} size="small" variant="contained" > {isAllSelected ? 'Unselect All' : 'Select All'} </Button>

Ambos hacen uso de los valores de rowValues cuya estructura se ve así:

 { 625fd0bc4163c339b4235286: true 627df6084067debf4de42287: true 629a481d848843b1baaf7945: true 6260feb706684d04a43da863: true 62809135dbf57c3ee8d7efd4: true }

Código relacionado con el valor predeterminado y la inicialización:

 const [rowValues, setRowValues] = useState([]); let temp = []; async function setAllValues(value) { await stableSort(rows, getComparator(order, orderBy)) .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) .forEach((row) => { temp = { ...temp, [row.id]: value }; }); console.log('| temp', temp); return temp; } React.useEffect(() => { setAllValues(false).then(setRowValues); }, []);

Cuando hago clic en el botón Seleccionar todo, todos los valores de los ID correspondientes se cambian a verdaderos. Ahora, para el accesorio marcado en la casilla de verificación, lo estoy configurando en el valor de la ID correspondiente (ya sea verdadero o falso). En cambio, recibí un error:

index.js:1 Material-UI: un componente está cambiando el estado marcado no controlado de SwitchBase para ser controlado. Los elementos no deben pasar de no controlados a controlados (o viceversa). Decida entre usar un elemento SwitchBase controlado o no controlado durante la vida útil del componente. La naturaleza del estado se determina durante el primer render. Se considera controlado si el valor no es undefined .

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

0

Creo que esto sucedió debido al valor del estado inicial, intente cambiar el valor inicial de todas las casillas de verificación a falso en lugar de indefinido, entonces creo que estará bien.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Eso sucede porque su valor inicial es indefinido/nulo. Use '' en su lugar, eso debería resolver el problema

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