SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Experiências e Aprendizados no
Mundo React
Wellington Costa Pereira
Quem sou eu?
● + 4 anos de experiência com
desenvolvimento de software
● Concluindo especialização em
Engenharia de Software com Ênfase
em Padrões de Software na UECE
● Toco guitarra e jogo CS:GO nas
horas vagas :p
GitHub:
https://github.com/WellingtonCosta
ExtJS
ExtJS
● Vários componentes prontos
● Customização trabalhosa
● Dependente do Sencha Cmd
● Fat bundle
AngularJS
AngularJS
● Two-way data binding
● Angular Material Design
● Fácil componentização
React
O JSF que deu certo! hahaha
Rafael Ponte gonna cry?
Component-based
View Layer
Props / State
export default class MyButton extends React.Component {
render() {
const { text, onClick } = this.props;
return (
<div>
<button type=”button” onclick={onClick}> {text} </button>
</div>
);
}
}
export default class MyPanel extends React.Component {
render() {
return (
<div>
<MyButton text=”Click me!” />
</div>
);
}
}
export default class MyUserPanel extends React.Component {
state = { userFound: false };
fetchUser = () => {
axios.get(“http://api.github.com/users/WellingtonCosta”)
.then((response) => this.setState({ userFound: response.data ? true : false }))
.catch((error) => this.setState({ userFound: false }))
}
render() {
const { userFound } = this.state;
return (
<div>
<h1>The user <b>WellingtonCosta</b> is { userFound ? ‘found’ : ‘not found’ }</h1>
<MyButton text=”Find” onClick={this.fetchUser} />
</div>
);
}
}
Virtual DOM
JSX
<MyButton color="blue" shadowSize={2}>
Click Me
</MyButton>
Compilado para
React.createElement(
MyButton,
{ color: "blue", shadowSize: 2 },
"Click Me"
);
Outro Exemplo
const Customers = ({ customers }) => (
<div className="customers-grid">
<Toolbar />
<Grid rows={
customers.map(customer => (
<div className="customers-grid__row">
<div className="customers-grid__row-name">{customer.name}</div>
<div className="customers-grid__row-email">{customer.email}</div>
</div>
)
}
/>
</div>
);
Refatorando...
const CustomerRow = ({ customer: { name, email } }) => (
<div className="customers-grid__row">
<div className="customers-grid__row-name">{name}</div>
<div className="customers-grid__row-email">{email}</div>
</div>
);
const Customers = ({ customers }) => {
const list = customers.map(customer => (<CustomerRow customer={customer} />);
return (
<div className="customers-grid">
<Toolbar />
<Grid rows={list} />
</div>
);
};
Finalizando...
Thank you all!

Mais conteúdo relacionado

Mais procurados

TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017Renato Groff
 
Aula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPRAula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPRAndré Luiz Forchesatto
 
Play - Full Stack Java Web Framework
Play -  Full Stack Java Web FrameworkPlay -  Full Stack Java Web Framework
Play - Full Stack Java Web FrameworkMauricio Carvalho
 
Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016Flávio Lisboa
 
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Renato Groff
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3André Luiz Forchesatto
 
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...Renato Groff
 
Desenvolvimento Web Ágil com Python e Django
Desenvolvimento Web Ágil com Python e DjangoDesenvolvimento Web Ágil com Python e Django
Desenvolvimento Web Ágil com Python e DjangoBruno Barbosa
 
.NET Core e Testes de Unidade - Visual Studio Summit 2017
.NET Core e Testes de Unidade - Visual Studio Summit 2017.NET Core e Testes de Unidade - Visual Studio Summit 2017
.NET Core e Testes de Unidade - Visual Studio Summit 2017Renato Groff
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaHenrique Limas
 
Como encarar o desenvolvimento front-end
Como encarar o desenvolvimento front-endComo encarar o desenvolvimento front-end
Como encarar o desenvolvimento front-endJean Carlo Emer
 
Zend Expressive de micro a fullstack
Zend Expressive de micro a fullstackZend Expressive de micro a fullstack
Zend Expressive de micro a fullstackLeonardo Tumadjian
 
Android Studio: Primeiros Passos
Android Studio: Primeiros PassosAndroid Studio: Primeiros Passos
Android Studio: Primeiros PassosRomualdo Andre
 

Mais procurados (20)

TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017
 
Aula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPRAula Introdução a VRaptor 4 - Pós Java UTFPR
Aula Introdução a VRaptor 4 - Pós Java UTFPR
 
Engarrafei
EngarrafeiEngarrafei
Engarrafei
 
Workshop frontend
Workshop   frontendWorkshop   frontend
Workshop frontend
 
Play - Full Stack Java Web Framework
Play -  Full Stack Java Web FrameworkPlay -  Full Stack Java Web Framework
Play - Full Stack Java Web Framework
 
Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016Zend framework 3 Hangout 2016
Zend framework 3 Hangout 2016
 
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
 
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
Testes de aplicações Web com Selenium, .NET Standard e .NET Core 2.0 - .NET S...
 
Desenvolvimento Web Ágil com Python e Django
Desenvolvimento Web Ágil com Python e DjangoDesenvolvimento Web Ágil com Python e Django
Desenvolvimento Web Ágil com Python e Django
 
.NET Core e Testes de Unidade - Visual Studio Summit 2017
.NET Core e Testes de Unidade - Visual Studio Summit 2017.NET Core e Testes de Unidade - Visual Studio Summit 2017
.NET Core e Testes de Unidade - Visual Studio Summit 2017
 
Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o Karma
 
Como encarar o desenvolvimento front-end
Como encarar o desenvolvimento front-endComo encarar o desenvolvimento front-end
Como encarar o desenvolvimento front-end
 
Zend Expressive de micro a fullstack
Zend Expressive de micro a fullstackZend Expressive de micro a fullstack
Zend Expressive de micro a fullstack
 
Protractor
ProtractorProtractor
Protractor
 
Documentando seu CSS
Documentando seu CSSDocumentando seu CSS
Documentando seu CSS
 
Android Studio: Primeiros Passos
Android Studio: Primeiros PassosAndroid Studio: Primeiros Passos
Android Studio: Primeiros Passos
 
Selenium ide apresentação
Selenium ide   apresentaçãoSelenium ide   apresentação
Selenium ide apresentação
 
Be React. Do Tests!
Be React. Do Tests!Be React. Do Tests!
Be React. Do Tests!
 
Desenvolvimento Web
Desenvolvimento WebDesenvolvimento Web
Desenvolvimento Web
 

Semelhante a React Experiências e Aprendizados

Apostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfvApostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfverickrodrigo23
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPMarcelo Andrade
 
Simplificando o full stack - desenvolvimento web na prática
Simplificando o full stack - desenvolvimento web na práticaSimplificando o full stack - desenvolvimento web na prática
Simplificando o full stack - desenvolvimento web na práticaMarianna Cruz Teixeira
 
Criando plugins jQuery
Criando plugins jQueryCriando plugins jQuery
Criando plugins jQueryRicardo Coelho
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaEduardo Bregaida
 
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Rodrigo Kono
 
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATECAplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATECRafael Pessoni
 
Apache Wicket derruba o padrão JSF
Apache Wicket derruba o padrão JSFApache Wicket derruba o padrão JSF
Apache Wicket derruba o padrão JSFBruno Borges
 
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaQConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaLoiane Groner
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Luís Cobucci
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFEmmanuel Neri
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Luís Cobucci
 
C#4 - Parte 2 - COM interop e variância
C#4 - Parte 2 - COM interop e variânciaC#4 - Parte 2 - COM interop e variância
C#4 - Parte 2 - COM interop e variânciaGiovanni Bassi
 

Semelhante a React Experiências e Aprendizados (20)

Apostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfvApostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfv
 
Desenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHPDesenvolvimento para a Web com CakePHP
Desenvolvimento para a Web com CakePHP
 
Simplificando o full stack - desenvolvimento web na prática
Simplificando o full stack - desenvolvimento web na práticaSimplificando o full stack - desenvolvimento web na prática
Simplificando o full stack - desenvolvimento web na prática
 
React Native - JSday
React Native - JSdayReact Native - JSday
React Native - JSday
 
Criando plugins jQuery
Criando plugins jQueryCriando plugins jQuery
Criando plugins jQuery
 
Hello vue
Hello vueHello vue
Hello vue
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
Framework web 3 - JSF + Spring boot
Framework web 3 - JSF + Spring bootFramework web 3 - JSF + Spring boot
Framework web 3 - JSF + Spring boot
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
Faça Sucesso Desenvolvendo com ASP.NET 4, ASP NET MVC e Visual Studio 2010
 
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATECAplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
Aplicações Web Multiplataforma com ASP .NET Core MVC - FATEC
 
Apache Wicket derruba o padrão JSF
Apache Wicket derruba o padrão JSFApache Wicket derruba o padrão JSF
Apache Wicket derruba o padrão JSF
 
Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2
 
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile MultiplataformaQConSP 2012: Sencha Touch 2: Mobile Multiplataforma
QConSP 2012: Sencha Touch 2: Mobile Multiplataforma
 
04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf04_Introducao_JavaScript.pdf
04_Introducao_JavaScript.pdf
 
Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011Qualidade em projetos PHP - SoLiSC 2011
Qualidade em projetos PHP - SoLiSC 2011
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSF
 
Palestra parse
Palestra parsePalestra parse
Palestra parse
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
C#4 - Parte 2 - COM interop e variância
C#4 - Parte 2 - COM interop e variânciaC#4 - Parte 2 - COM interop e variância
C#4 - Parte 2 - COM interop e variância
 

React Experiências e Aprendizados

  • 1. Experiências e Aprendizados no Mundo React Wellington Costa Pereira
  • 3. ● + 4 anos de experiência com desenvolvimento de software ● Concluindo especialização em Engenharia de Software com Ênfase em Padrões de Software na UECE ● Toco guitarra e jogo CS:GO nas horas vagas :p GitHub: https://github.com/WellingtonCosta
  • 4.
  • 6. ExtJS ● Vários componentes prontos ● Customização trabalhosa ● Dependente do Sencha Cmd ● Fat bundle
  • 8. AngularJS ● Two-way data binding ● Angular Material Design ● Fácil componentização
  • 10. O JSF que deu certo! hahaha Rafael Ponte gonna cry?
  • 14. export default class MyButton extends React.Component { render() { const { text, onClick } = this.props; return ( <div> <button type=”button” onclick={onClick}> {text} </button> </div> ); } }
  • 15. export default class MyPanel extends React.Component { render() { return ( <div> <MyButton text=”Click me!” /> </div> ); } }
  • 16. export default class MyUserPanel extends React.Component { state = { userFound: false }; fetchUser = () => { axios.get(“http://api.github.com/users/WellingtonCosta”) .then((response) => this.setState({ userFound: response.data ? true : false })) .catch((error) => this.setState({ userFound: false })) } render() { const { userFound } = this.state; return ( <div> <h1>The user <b>WellingtonCosta</b> is { userFound ? ‘found’ : ‘not found’ }</h1> <MyButton text=”Find” onClick={this.fetchUser} /> </div> ); } }
  • 18.
  • 19. JSX
  • 22. React.createElement( MyButton, { color: "blue", shadowSize: 2 }, "Click Me" );
  • 24. const Customers = ({ customers }) => ( <div className="customers-grid"> <Toolbar /> <Grid rows={ customers.map(customer => ( <div className="customers-grid__row"> <div className="customers-grid__row-name">{customer.name}</div> <div className="customers-grid__row-email">{customer.email}</div> </div> ) } /> </div> );
  • 26. const CustomerRow = ({ customer: { name, email } }) => ( <div className="customers-grid__row"> <div className="customers-grid__row-name">{name}</div> <div className="customers-grid__row-email">{email}</div> </div> ); const Customers = ({ customers }) => { const list = customers.map(customer => (<CustomerRow customer={customer} />); return ( <div className="customers-grid"> <Toolbar /> <Grid rows={list} /> </div> ); };