Oi Felipe, tudo bem?
Entendo sua preocupação em relação à abordagem utilizada no curso. A linha de código que você mencionou é, de fato, um exemplo de hard coding, que é quando um valor é inserido diretamente no código. No entanto, é importante lembrar que este curso é didático e o exemplo foi simplificado para facilitar o entendimento dos conceitos.
No exemplo do curso, temos a seguinte linha de código:
if (itens.length === 25) return unsubscribe();
Neste caso, estamos assumindo que existem exatamente 5 categorias e cada categoria tem exatamente 5 itens, totalizando 25 itens. Se todos os 25 itens foram carregados, não há necessidade de buscar mais itens, então a função unsubscribe() é chamada.
Em um cenário real, você provavelmente não saberia o número exato de itens ou categorias, então essa abordagem não seria apropriada. Em vez disso, você poderia verificar se todos os itens de uma categoria específica já foram carregados antes de iniciar uma nova busca. Por exemplo:
const nomeCategoria = action.payload;
const itensCategoria = itens.filter(item => item.categoria === nomeCategoria);
if (itensCategoria.length > 0) return unsubscribe();
Neste exemplo, estamos filtrando os itens pela categoria atual antes de iniciar uma nova busca. Se já existem itens carregados para essa categoria, a função unsubscribe() é chamada e nenhuma nova busca é iniciada.
Um abraço e bons estudos.