• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

202
Vistas
Envíe una sola solicitud de API esperando que se seleccionen ambos campos

Estoy usando React con Typescript. Tengo un requisito en el que tenemos una sección de filtros con DateRangePicker como un campo y un menú desplegable de casillas de verificación como otro. Cada vez que se selecciona un intervalo de fechas en el calendario y se hace clic en Aceptar, se llama a una función de controlador que, a su vez, envía una acción de reducción y, posteriormente, se envía una solicitud de API para filtrar los datos en función del intervalo de fechas seleccionado. De manera similar, cuando marcamos o desmarcamos una casilla de verificación en el segundo campo, se llama a otra función de controlador que, a su vez, envía una acción de reducción y, posteriormente, se envía una solicitud de API para filtrar los datos en función de los datos verificados. Ahora, necesito esperar 5 segundos para que el usuario seleccione el rango de fechas y ver si el usuario marca una casilla de verificación dentro de los 5 segundos. En caso afirmativo, solo necesito enviar una sola solicitud de API en lugar de dos (una para la selección del rango de fechas y otra para la selección de la casilla de verificación). Así es como se ven las funciones de mi controlador a continuación

 const dateChangeHandler = (value: DateRange | null, event: React.SyntheticEvent) => { setSelectedDateRange(value); dispatch(fetchFilteredData({ payload: { dateRange: value, selectedTools: selectedTools } })) } const selectionChangeHandler = (value: string[]) => { if (value.length > 0) { setSelectedTools(value); dispatch(fetchFilteredData({ payload: { dateRange: selectedDateRange, selectedTools: value } })) } else { dispatch(fetchFilteredData({ payload: { dateRange: selectedDateRange, selectedTools: [] } })) }

};

¿Alguna idea de cómo puedo continuar con esto? Cualquier ayuda sería muy apreciada. ¡Gracias por adelantado!

about 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede establecer un tiempo de espera que, 5 segundos después, activará el evento de despacho. Almacene el ID de tiempo de espera en un estado/ref y clearTimeout en el otro controlador de entrada:

 const [timeoutId, setTimeoutId] = useState(null); const dateChangeHandler = (value: DateRange | null, event: React.SyntheticEvent) => { setSelectedDateRange(value); const _timeoutId = window.setTimeout(() => dispatch(fetchFilteredData({ payload: { dateRange: value, selectedTools: selectedTools } })), 5000) setTimeoutId(_timeoutId); } const selectionChangeHandler = (value: string[]) => { if (value.length > 0) { if (timeoutId) { window.clearTimeout(timeoutId); setTimeoutId(null); } setSelectedTools(value); dispatch(fetchFilteredData({ payload: { dateRange: selectedDateRange, selectedTools: value } })) } ... };
about 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda