1
resposta

Penso não ser a melhor abordagem para o Load More

Não é uma dúvida, mas uma observação:

Sei que a intenção é ensinar a utilizar output property, mas limpando o campo search e colocando para o button load more voltar a exibir todas as fotos sem filtro, vamos imaginar o seguinte cenário: existem 20 fotos com a descrição farol, inserindo o filtro vão aparecer 12 (faltam 08), quando eu pedir pra exibir mais, ao invés de exibir as 08 restantes, vai voltar a exibir todas as fotos e isso vai frustrar o usuário. Penso que talvez a abordagem ideal seria seria exibir uma mensagem de advertência que só existem aquelas 02 fotos de farol e utilizar do output property.

Se estou equivocado, por favor, me ajudem.

Abraço.

1 resposta

Olá, Hugo, tudo bem? Agradeço por compartilhar sua observação e sua preocupação com a experiência do usuário. Realmente, a abordagem de recarregar todas as fotos ao clicar em "load more" após remover o filtro pode não ser a melhor escolha, como você apontou.

Uma alternativa seria exibir uma mensagem informando ao usuário que não existem mais fotos para serem exibidas com base no filtro selecionado. Dessa forma, o usuário não fica frustrado ao clicar em "load more" e ver as mesmas fotos novamente.

Outra opção seria desabilitar o botão "load more" quando não houver mais fotos para serem exibidas com base no filtro selecionado. Isso também pode ajudar a evitar a frustração do usuário.

No entanto, a abordagem de usar output property também pode ser útil, como você mencionou. Por exemplo, poderíamos usar uma variável no componente pai que controla o número de fotos exibidas. Quando o usuário clica em "load more", essa variável é atualizada e passada para o componente filho responsável por exibir as fotos.

Segue um exemplo de como poderíamos implementar isso:

No componente pai:

export class AppComponent {
  filteredPhotos: Photo[] = [];
  numPhotosToShow = 12;

  onFilterChange(filteredPhotos: Photo[]) {
    this.filteredPhotos = filteredPhotos;
    this.numPhotosToShow = 12;
  }

  onLoadMore() {
    this.numPhotosToShow += 12;
  }
}

No componente filho responsável por exibir as fotos:

<div *ngFor="let photo of filteredPhotos | slice:0:numPhotosToShow">
  <!-- exibe a foto aqui -->
</div>

<button *ngIf="filteredPhotos.length > numPhotosToShow" (click)="onLoadMore()">Load More</button>

Dessa forma, quando o usuário clica em "load more", apenas as próximas 12 fotos são exibidas, em vez de recarregar todas as fotos novamente. Além disso, se não houver mais fotos para serem exibidas, o botão "load more" não é exibido.

Espero que essas sugestões tenham sido úteis.