Estoy iterando sobre los permisos y marcando la casilla de verificación si el permiso está incluido en valores predefinidos (es decir, val) y desmarcando la casilla de verificación de lo contrario, lo cual funcionó bien, pero cuando hago clic en las casillas de verificación representadas para marcar o desmarcar no hacer nada.
No puedo marcar o desmarcar después de mostrar mis casillas de verificación. Necesito su ayuda, gracias.
Su role.permissions nunca se actualiza, por lo que el atributo de casilla de checked permanece como su valor inicial. ¿Está utilizando componentes controlados ? Si es así, puede agregar un controlador de eventos onChange a su input para actualizar su role.permissions .
En primer lugar, la operación ternaria checked={role?.permissions?.includes(val[i]) ? true : false} es redundante y se puede simplificar para simplemente checked={role?.permissions?.includes(val[i])} , ya que el valor de esa propiedad será verdadero o falso de todos modos.
En segundo lugar, al establecer value= en verdadero o falso, está congelando la casilla de verificación en ese valor. Puede omitir esa configuración, ya que el atributo de valor se enviará de acuerdo con el valor marcado o no marcado. Además, normalmente asigna value=checked o value=unchecked , no true y false.
use la función de mapa y useState para controlar los valores de su casilla de verificación.