de interfaces • Criado e mantido pelo Facebook • Open Source (MIT License) • Combinação de Javascript e "XML" para declarar e renderizar componentes dinâmicos
Facebook • Usado no newsfeed do Facebook em 2011 • Usado no Instagram em 2012 • Tornou-se open source em 2013 • Versão atual: 16.3 (04/2018) https://blog.risingstack.com/the-history-of-react-js-on-a-timeline/
o DOM trabalhosas, confusas e com baixa performance • Projetos desestruturados e difíceis de manter (spaghetti code) Frameworks • Alta complexidade e aumento do pageload • Curva de aprendizado alta • Sintaxe incomum
que usam inputs (props), e estado interno (state) para renderizar elementos da UI usando JSX • Podem ser aninhandos indefinidamente • Expõe métodos de seu lifecycle para que seja possível implementar funcionalidades: componentWillMount, componentDidMount, ...
usado para criar componentes • Trabalha com separação de responsabilidades ao invés de separação de tecnologias JSX convertido para Javascript no build
fluem de cima para baixo • Eventos fluem de baixo para cima • “Props” são imutáveis e passadas de pais para filhos • “State” é mutável e mantêm o estado interno de cada componente
Salva snapshot do DOM Virtual • Altera o DOM Virtual • Cria diff entre o novo DOM Virtual e o snapshot (diffing) • Aplica no DOM real os resultados do diff (reconciliation) Virtual DOM (Representação do DOM por meio de objetos Javascript)
um mock • Quebre a UI em uma hierarquia de componentes • Crie uma versão estática em React • Identifique o conjunto mínimo de dados capazes de representar o estado da aplicação • Defina onde manter o estado da aplicação • Implemente o fluxo de events e event handlers https://reactjs.org/docs/thinking-in-react.html