The-Bugger-Ducks / owl-partners-mobile

Mobile do projeto "Owl Partners" (5º DSM - 2023, FATEC Profº Jessen Vidal - SJC)
1 stars 0 forks source link

Implementar debounce/throttle na search bar (de usuários e parcerias) #85

Closed MariaGabrielaReis closed 1 year ago

MariaGabrielaReis commented 1 year ago

Foi implementado debounce/throttle nas barras de pesquisa de usuários e parcerias:

Função que cria o hook de throttle:

export function useThrottle(value: string, func: any, delay: number = 500) {
  useEffect(() => {
    let timeout: NodeJS.Timeout;

    const handleInputChange = () => {
      clearTimeout(timeout);
      timeout = setTimeout(() => func(value), delay);
    };

    handleInputChange();

    return () => clearTimeout(timeout);
  }, [value, delay]);
}

Aplicação no input de busca:

const [userNameFilter, setUserNameFilter] = useState('');
useThrottle(userNameFilter, getUserByName); // adiciona na função o valor a ser buscado e a função de busca

<Input ...  onChangeText={(text) => setUserNameFilter(text)} />