En resumen, tenemos una base de datos masiva y necesitamos proporcionar resultados a medida que el usuario los escribe en el cuadro de búsqueda. Es imposible para nosotros precargar consultas e intentar hacer coincidir de esa manera.
Actualmente, enviamos una solicitud al servidor con la nueva cadena de consulta cada 2 caracteres o 5 segundos. Sin embargo, esto es un poco complicado, así que estoy buscando para ver si hay una forma más rápida/mejor de hacerlo.
Las soluciones anteriores que he visto requerían una recuperación previa, lo que en nuestro caso no es posible y considerando que el tamaño de la devolución es demasiado costoso.
Recomendaría usar debounce para esto. Hará que la función espere una cierta cantidad de tiempo después de ser llamada antes de ejecutarse. Las llamadas adicionales a la función restablecerán el temporizador. De esa forma, la función no se ejecutará hasta que los usuarios hayan terminado (o pausado) la escritura.
Esto evitará una carga innecesaria en su base de datos y, al mismo tiempo, brindará una buena experiencia de usuario (siempre que tenga un tiempo de rebote razonable). Se pueden encontrar ejemplos de cómo hacer antirrebote en React aquí