Boa tarde, tudo bem?
Sei que há uma grande vantagem em relação a abstrair as responsabilidades e utilizar a DI a favor de um código desacoplado e estou totalmente de acordo com a separação da interface e serviços, assim como ocorre no back-end; entre repositorios e a implementação dos métodos de fato. Porém, para levantamento, gostaria de questionar alguns pontos
- Conforme link do repositório abaixo, agora teremos useFecth[nome_do_recurso] customizado para cada recurso: Categories, Products, etc, porém, algo que começa a se repetir, são as definições de isLoading, error e a própria lógica idêntica do método fetchCategories e fetchProducts em cada hook individual. Essa repeticção não poderia ser evitado, fazendo com que os hooks especializados, utilizassem como base ainda o useFecth genérico? ou alguma outra abordagem?
- Por não estar sendo definido instâncias de classes, mas sim sendo definido em funções, não há o risco de eu chamar o useFetchProducts em mais de um local e gerar problemas de performance por não adotar alguma prática como o Singleton, correto? Mas em relação a funções que foi o formato implementado, não há nenhum risco desse tipo da forma implementada, correto?
- Caso eu desejar implementar demais métodos REST, como POST, PUT, DELETE, bastaria seguir os passos abaixo, correto?
- adicionar o contrato em cada interface ( ex: IProductService ),
- implementar o método em cada useFetch individual,
- adicionar o método em cada service ( ex: ProductsService )
- adicionar o método na interface IHttp
https://github.com/alura-cursos/4105-use-dev-commerce-app/compare/aula-04...aula-05
Obrigado
Felipe D.R