Please enable JavaScript.
Coggle requires JavaScript to display documents.
React
Biblioteca Javascript construída pelo Facebook (Módulos Famosos,…
React
Biblioteca Javascript construída pelo Facebook

Módulos Famosos
-
-
-
-
-
-
Immutable.js
It implements fully persistent data structures from scratch using advanced things like tries (digital trees) to implement structural sharing.
-
-
-
-
Características
-
-
Virtual DOM
Nada mais é que uma representação da árvore de elementos em memória. É um equívoco chamar de Virtual DOM tendo em vista que o DOM é apenas um ambiente no qual React opera podendo também funcionar com native iOS and Android views via React Native
-
-
Pode ser utilizada com outros Frameworks por se tratar de uma biblioteca focada na renderização de componentes
-
-
-
Flux
Flux é uma arquitetura definida pelo Facebook para se trabalhar com aplicações SPA. A ideia é ter um fluxo unidirecional de dados. Evitando o caos que o two way data-binding e brodcasting geram.
Em suma, o Flux é uma palavra fancy para definir uma arquitetura baseada no pattern observer.
Arquitetura
Dispatch
O dispatch é o hub, é ele que implementa o pattern observer. Escutando as ações e passando os dados para as stores. É aconselhável ter apenas um por aplicação.
Store
As stores são responsáveis por manter o estado da aplicação, passando o estado para as views. São as stores as detentoras da lógica de negócio.
Actions
As ações podem ser executadas pela interação do usuário com a interface (views), ou fatores externos como API.
-
Redux
It’s an application data-flow architecture, rather than a traditional library or a framework like Underscore.js and AngularJS. Redux is used mostly for application state management.
-
Características
Immutability
- Predictabiliy - para os mesmos inputs os mesmo outputs.
- Mutation Tracking - possível seguir as mudanças
- Performance - as Tries (estruturas em formato de árvores permitem manter apenas o diff das alterações), e como um novo objeto é retornado podemos fazer a comparação rasa (shallow) ao invés de fazer a profunda (deep) ===. Isso auxilia por exemplo fazer uma memoization mais simples.
Persistent Data Structure - Ocorre quando se preserva parte da versão anterior do objeto após o mesmo ser modificado.
-
-
-
-
-
-
-
-
JSX
JSX é uma sintaxe extension to Javascript. É muito similar ao HTML, no entanto, não se trata de HTML e muito menos uma simples string. É possível facilment criar componentes com o auxílio de JSX, ou se desejar com API DOM diretamente.
-
-
-
-
-
-
-
Componentes
-
React.PureComponent
It just implements shouldComponentUpdate in shallow level, comparing props and state in shallow level.
-
stateless x stateful - uses setState or not.
pure x impure - when pure (ex. PureComponent) will use sCU to when receive the same props return same output.
functional x class - functional has less resources like lifecycle methods, but is simpler and easier.
Elements
-
Um elemento React não é como um elemento DOM. Eles são objetos simples (plain object) leves de se criar. E fazem match com elementos no DOM.
-
React DOM
Aplicações React geralmente possui um único ponto de renderização, convencionalmente chamando de 'root'. No entanto, é possível ter mais de um, como por exemplo quando se está integrando React com aplicações já existem para gerir alguns poucos componentes.
-
-
-
-
-
Design Patterns
-
Higher Order Components
É basicamente uma função que recebe um componente e retornar um novo componente que envolve o anterior em uma regra específica e encapsulada. Funciona como wrapper para decorar (decorate pattern) um componente isolando parte de uma lógica, instanciando o componente envolvido nessa lógica e passando dados para o mesmo.
Providers
É um pattern que possibilita passar dados para os componentes filhos. Isso se dá através do recurso context da aplicação. É basicamente um componente React que envolve outros (wrap) criando um contexto.
-
-
Context
It's a good solution to pass data deeply without intermediates components. But it has a problems with sCU and should be used as DI of data to component constructed once. It's a good idea have a HOC to wrap component that reads context data.
-
Reconciliation
Reconciliation is the algorithm responsible for the diff tree between prev and next state or props update. It tear down when the root tree is different, and update props and children making the diff algorithm. It's important to use key property on lists.
React DOM and React Native can use their own renderers while sharing the same reconciler, provided by React core.
-
Hooks
Vantagens / Motivações
- Statefull components -> Podemos ter function components com estado e outros recursos do React (ex. Lifecycles methods). Assim como podemos compartilhar nossa lógica de estado entre outros componentes ou entre a comunidade.
- Complex components become hard to understand -> Podemos ter o hook useEffect substituindo o componentDidMount, componentDidUpdate e componentWillUnmount. E ao invés de termos lógica misturada, ou seja, muitas coisas diferentes dentro de cada método, podemos com o useEffect termos lógicas específicas.
- Classes confuse both people and machines -> Objetos em Javascript tem uma peculiaridade com relação as outras linguagens. A propriedade "this" pode apontar para um objeto diferente dependendo do contexto. Isso exige fazermos bind para o objecto em questão evitando assim problemas mas gerando complexidade e confusão.