Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

255
Visualizações
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 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

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 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda