Estoy usando un componente de entrada múltiple para capturar códigos MFA. Piense en seis cuadros idénticos y, a medida que escribe, se mueve al siguiente con un envío automático al finalizar.
Manejamos la lógica de pegado de manera única al completar el código uno a la vez desde el principio, lo que funciona muy bien y le permite al usuario pegar en cualquier campo de entrada.
El problema es que cuando se usa un teclado de Google (GBoard, nativo de los teléfonos Pixl), la función del portapapeles parece no activar un pegado real, sino que intenta activar algún tipo de evento onChange o una serie de eventos onChange.
Entonces, por ejemplo, si tiene 123456 en su portapapeles y presiona el botón del portapapeles, el controlador de cambios se activa con "1" en lugar de onPaste de "123456".
Me preguntaba si alguien se había topado con problemas similares y cómo lo solucionó. Investigué la ruta navigator.clipboard, pero esto requiere que se soliciten permisos al usuario, y aún necesitaría identificar de manera única el teclado del usuario, ya que esto desencadenaría copias y pegados normales (que funcionan correctamente)
Mi compañero de trabajo encontró una solución para tener un comportamiento específico de handleChange igual al comportamiento de handlePaste cuando e.target.value.length es igual a codeLength (lo que indica que se pega desde gBoard en este caso). Espero que esto ayude a cualquier otra persona que pueda encontrarse con este problema.