a injeção de dependencias é dar new no construtor e fazer a separacao dos dados com isso com o padrao observer pra nao ter q renderizar tudo sempre sobrecarregando e passando e tendo que passar tudo via props e state?
a injeção de dependencias é dar new no construtor e fazer a separacao dos dados com isso com o padrao observer pra nao ter q renderizar tudo sempre sobrecarregando e passando e tendo que passar tudo via props e state?
Olá, Marco, tudo bem?
Nos desculpe a demora a responder.
Na verdade a injeção de dependência no caso dessa aplicação React é simplesmente quando passamos uma ou mais propriedades para algum componente. Como abaixo:
<ListaDeCategorias
categorias={this.categorias}
/>
E na ListaDeCategorias
podemos ter algo assim:
constructor(props) {
super(props);
}
componentDidMount() {
this.props.categorias.inscrever(this._novasCategorias.bind(this));
}
Injetamos por props
a propriedade categorias
, e assim o componente ListaDeCategorias
tem acesso ao método inscrever
.
O construtor no caso acima é opcional, mas eu coloquei para reforçar que quando passamos uma propriedade para um componente, ela passa pelo constructor
, através das props
. Ou seja, realizamos uma injeção de dependência em um componente ou classe quando fazemos ele depender de algum fator externo, recebendo alguma propriedade através das props
(ou seja, do construtor).
Assim, nos aproveitamos dessa característica para implementar o padrão Observable, que é responsável por atualizar apenas os componentes necessários de acordo com atualizações nas fontes de dados.
Esse conceito de injeção de dependências pode parecer complicado, mas na verdade é algo simples no React, sendo basicamente a passagem de propriedades para um componente. Nós costumamos ver esse conceito de forma mais nítida em frameworks como o Angular.
Espero ter ajudado e que não tenha ficado tão confuso. Abraços e bons estudos! :)
entendo que injeção de dependencia está ligada a interfaces que se relacionam com uma entidade e fazem essas trocas dessas propriedades via construtor(foi interessante ter reforçado senao declarar nada no construtor nem precisa escrever ele vazio? eh como java?) mas certamente ainda preciso entender melhor de uml ateh desenvolver...soh uma pequena sugestão se pudesse fazer uma pequena uml desse exemplo apreciaria bastante e entendo que iria fortificar meu engajamento no desenvolvimento... mas entendi ser muito interessante o comentário de dizer que no framework angular fica mais visível de observar esse conceito ;-) vou pesquisar. att