Ao entrar em alguma rota /search que tenha o parâmetro q (query) definido, uma pesquisa duplicada é realizada.
Como verificar:
Entre no modo de desenvolvedor -> Faça alguma pesquisa na tela inicial -> verifique por um console.log() de um array contendo vários objetos, esse é o resultado da pesquisa sendo logado, e o comportamento esperado é que apenas um console.log() apareça, junto de uma unica requisição GET.
O bug ocorre quando você entra na rota /search com o parametro q definido, por exemplo:
/search?q="orgulho" irá resultar em dois console.log() e duas requisições GET.
Possíveis causas:
O componente de pesquisa está programado para enviar um evento de submit assim que detectar um valor de q diferente de "" (string vazia):
useEffect(() => {
let submit = setTimeout(async () => {
if (query != null && query !== "") {
formRef.current!.dispatchEvent(
new Event("submit", { bubbles: true, cancelable: true })
);
}
// ~500ms gives enough time for everything to render.
}, 500);
return () => clearTimeout(submit);
}, [page, searchParams]);
Isso funciona até certo ponto, mas aparentemente está fazendo com que o componente re-renderize logo ao ser montado, fazendo com que uma requisição dupla seja enviada a API.
Como o Biblioterra salva a pesquisa em cache automaticamente, não estamos realmente colocando pressão extra nos servidores do LibraryGenesis, e por esse motivo, esse issue não é urgente.
Porém, é uma oportunidade boa de se familizariar com essa parte do código, e por isso está aberto para quem quiser resolver.
Boa sorte!
Eu ia manter esse bug para fins de aprendizado de quem quisesse ajudar a contribuir.
Porém, ele acabou atrapalhando o novo sistema de paginação, por isso ele foi corrigido.
Problema:
Ao entrar em alguma rota
/search
que tenha o parâmetroq
(query) definido, uma pesquisa duplicada é realizada.Como verificar:
Entre no modo de desenvolvedor -> Faça alguma pesquisa na tela inicial -> verifique por um console.log() de um array contendo vários objetos, esse é o resultado da pesquisa sendo logado, e o comportamento esperado é que apenas um console.log() apareça, junto de uma unica requisição GET.
O bug ocorre quando você entra na rota
/search
com o parametroq
definido, por exemplo:/search?q="orgulho"
irá resultar em dois console.log() e duas requisições GET.Possíveis causas:
O componente de pesquisa está programado para enviar um evento de
submit
assim que detectar um valor deq
diferente de""
(string vazia):Código mencionado
Isso funciona até certo ponto, mas aparentemente está fazendo com que o componente re-renderize logo ao ser montado, fazendo com que uma requisição dupla seja enviada a API.
Como o Biblioterra salva a pesquisa em cache automaticamente, não estamos realmente colocando pressão extra nos servidores do LibraryGenesis, e por esse motivo, esse issue não é urgente.
Porém, é uma oportunidade boa de se familizariar com essa parte do código, e por isso está aberto para quem quiser resolver.
Boa sorte!