SlideShare a Scribd company logo
1 of 38
Download to read offline
ReactNativena
globo.com
Webdeveloperhá7anos
4anosemeionaglobo.com.
Globoesporte,Home,NavegaçãoeApps.
Guilherme
Bruzzi
ambienteda
globo.com
• Grandes portais com mais de 50 milhões de
acessos diários
• Muitos programadores web que adoram JS e
mais recentemente React
• Nós amamos open source!
opensource.globo.com
equipe de
produtos
ambienteda
globo.com
ge gshow
g1tt
equipe de
plataformas
oproblemadasapps
dagcom
• Problema atual: Todas em webview
• One app to rule them all
392 × 690392 × 690
oproblemadasapps
dagcom
oproblemadasapps
dagcom
• Primeira App em RN: Techtudo (depois g1, gshow e ge)
• Um feed nativo para consumir matérias
appshíbridas
• Soluções Webview como Cordova / Phonegap /
ionic
• Reaproveitamento de código forte
• Problemas da Webview
• “Cross-browser"
códigonativo
• Objective-C / Swift para iOS
• Java para Android
• Perfomance otimizada
• 2 códigos para as mesmas regras de negócio
pocnativo
• 1 semana para iOS
• 1 semana para Android
xamarin
• C# com Mono .NET framework e IDE própria
• Compilado para interagir com o Java e Obj-C
• Reaproveitamento de código
react
• Lib criada em 2013 pelo Facebook
• Performance na escrita de mudanças
• Componentização por padrão
• Comunidade ativa e open source
exemploreact
• Criado com create-react-app
1. Estilo inline
2. Props
3. State
npm install -g create-react-app
create-react-app my-app
reactplataformas
reactplataformas
• “learn once, write everywhere”:
1. Android (suporte Padrão)
2. iOS (suporte Padrão)
3. Windows: https://github.com/ReactWindows/
react-native-windows
4. Ubuntu: https://github.com/CanonicalLtd/
react-native
reactnative
• Criado em 2015
• JS e React
• Estilo via dialeto de CSS / Flexbox
• Performance nativa
• Não usa webview
• Reaproveitamento de código cross-plataforma
pocreactnative
• 2 semanas para os dois (código único)
Muitoobrigado!
=)
reactnative
arquitetura
• nenhuma webview
• Thread JS (webkit)
• Shadow Queue
• Main e threads Nativa (inclui UI)
• Mais profundamente em: https://www.youtube.com/
watch?v=Ah2qNbI40vE (Tadeu Zagallo)
reactnative
arquitetura
• Códigos: https://github.com/guilhermebruzzi/rnExamples
• Exemplo geral
1. Hello World + Reload e hot reload
2. Componentes padrões: Textos, imagens e ListView
3. Routers que usamos
reactnative
exemplos
• Linter (Eslint airbnb)
• Flow (vs typescript)
• Mobx (vs Redux)
• RN Router Flux/ Mobx
Router
• Webview Bridge
• Urban Airship
• ES6 fetch
• Code Push
• Fabric
reactnativeconfig
nagcom
rnconfig
rnrouterflux/mobxrouter
• React Native router flux:
https://github.com/aksonov/react-native-router-flux
• React Native mobx:
https://github.com/aksonov/react-native-mobx
rnconfig
linter
• Linter (Eslint extendendo eslint-config-airbnb)
• Erros na hora
Tipagem no meio do javascript
// @flow
const foo = (b: boolean): string => (
(b) ? 'Hello' : 'World'
);
const bar: string = foo();
rnconfig
flow
const { action, observable } = mobx;
const { observer } = mobxReact;
class CountStore {
@observable count = 0;
@action addCount() { this.count++; }
@action decCount() { this.count--; }
}
const store = new CountStore();
@observer
class App extends React.Component {
render() {
return (
<div>
<span>Contador: {store.count}</span>
<button onClick={() => store.addCount()}> + </button>
<button onClick={() => store.decCount()}> - </button>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById('app'));
rnconfig
mobx
Controle de estado global (https://jsbin.com/qizehep)
const injectScript = `
WebViewBridge.onMessage = function (message) {
console.log('Received from react native', message);
};
WebViewBridge.send('hello from webview');
`;
class App extends React.Component {
onBridgeMessage(message) {
const { webviewbridge } = this.refs;
console.log('Received from webview', message);
webviewbridge.sendToBridge("hello from react-native");
}
render() {
return (
<WebViewBridge
ref="webviewbridge"
onBridgeMessage={this.onBridgeMessage.bind(this)}
injectedJavaScript={injectScript}
source={{uri: "http://google.com"}}/>
);
}
}
rnconfig
webviewbridge
React Native Webview Bridge: https://github.com/alinz/react-native-webview-bridge
import ReactNativeUA from 'react-native-ua';
class App extends Component {
constructor(props) {
super(props);
ReactNativeUA.enable_notification();
ReactNativeUA.handle_background_notification();
ReactNativeUA.set_named_user_id('user_id');
}
componentWillMount() {
// add handler to handle all incoming notifications
ReactNativeUA.on_notification((notification) => {
console.log('notification:', notification.data,
notification.url,
notification.platform);
alert(notification.alert);
});
}
render () {
return (<View><Text>ReactNativeUA</Text></View>);
}
}
React Native UA: https://github.com/globocom/react-native-ua
rnconfig
urbanairship
RN Networking: https://facebook.github.io/react-native/docs/network.html
Também suporta:
1. XMLHttpRequest (axios)
2. WebSocket
fetch('https://facebook.github.io/react-native/movies.json')
.then((response) => response.json())
.then((responseJson) => {
return responseJson.movies;
})
.then((movies) => {
console.log('movies', movies);
})
.catch((error) => {
console.error(error);
});
rnconfig
fetch
RN Code Push: https://github.com/Microsoft/react-native-code-push
npm install -g code-push-cli
code-push register
code-push app add <appName>
code-push release-react <appName> <platform>
rnconfig
codepush
• RN Fabric: https://github.com/corymsmith/react-
native-fabric
• https://fabric.io/
1. Crashlytics
2. Beta
rnconfig
fabric
rnconfig
crashlytics
rnconfig
beta
• Depender de projetos open source experimentais
• Erros que a sua especialidade não está acostumada
• Atualizações constantes e quebras de contrato
• Ler muito código e estudar muito (relativamente pouca
documentação)
• Ter que criar bridges para módulos que já existem
reactnative
desvantagens
facebook.github.io
/react-native
reactnative
showcase
• Avalie sempre todas as alternativas.
Não existe bala de prata!
• Versão 0.35 (última, mas lançam uma nova numa média de
2 semanas)
• A próxima virá com uma contribuição nossa PR (#9617)
• Muitas apps estão nascendo com React Native
conclusão
• guibruzzi@gmail.com
• fb.com/guilhermehbruzzi
• github.com/guilhermebruzzi
• dev.globo.com (blog da globo.com)
• fb.com/globodev
• slideshare.net/guilhermebruzzi/react-native-na-globocom
contato
Perguntas?
Muitoobrigado!
=)

More Related Content

What's hot

Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01 Léo Dias
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação webCentro Paula Souza
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e GitIgor Steinmacher
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a InternetLeonardo Soares
 
Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsPatrick Monteiro
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareCloves da Rocha
 
Bootstrap praticas mais usadas
Bootstrap praticas mais usadas Bootstrap praticas mais usadas
Bootstrap praticas mais usadas Marconi Pacheco
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 

What's hot (20)

Introdução a React Native
Introdução a React NativeIntrodução a React Native
Introdução a React Native
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
MVC
MVCMVC
MVC
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação web
 
Aprendendo a Usar o Netbeans
Aprendendo a Usar o NetbeansAprendendo a Usar o Netbeans
Aprendendo a Usar o Netbeans
 
Introdução ao GitHub e Git
Introdução ao GitHub  e GitIntrodução ao GitHub  e Git
Introdução ao GitHub e Git
 
Introdução a programação para a Internet
Introdução a programação para a InternetIntrodução a programação para a Internet
Introdução a programação para a Internet
 
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de SoftwareFundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
 
Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page Applications
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Introdução APIs RESTful
Introdução APIs RESTfulIntrodução APIs RESTful
Introdução APIs RESTful
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
Introdução CSS
Introdução CSSIntrodução CSS
Introdução CSS
 
Bootstrap praticas mais usadas
Bootstrap praticas mais usadas Bootstrap praticas mais usadas
Bootstrap praticas mais usadas
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 

Similar to React Native na globo.com

TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoDesenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoGuilherme Heynemann Bruzzi
 
Intodução ao React
Intodução ao ReactIntodução ao React
Intodução ao ReactDev PP
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Criciúma Dev
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Renato Groff
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
Criando uma PWA com React para consumir uma API
Criando uma PWA com React para consumir uma APICriando uma PWA com React para consumir uma API
Criando uma PWA com React para consumir uma APIJessica Zanelato Soares
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...E-Commerce Brasil
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
Primeiros passos no Vue.js
Primeiros passos no Vue.jsPrimeiros passos no Vue.js
Primeiros passos no Vue.jsJoel Rodrigues
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao androidMessias Batista
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Marcelo Marques Gonçalves
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekRenato Groff
 
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015  - Interfaces Ricas com Rails e React.JSTDC São Paulo 2015  - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JSRodrigo Urubatan
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScriptCarlos Santos
 

Similar to React Native na globo.com (20)

TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Desenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do códigoDesenvolvendo uma App multiplataforma compartilhando 90% do código
Desenvolvendo uma App multiplataforma compartilhando 90% do código
 
Intodução ao React
Intodução ao ReactIntodução ao React
Intodução ao React
 
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
Desenvolvimento Mobile Multiplataforma: Uma abordagem ágil e de alto desempen...
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
Docker de ponta a ponta: do Desenvolvimento à Nuvem - UNICID - Novembro-2019
 
Workshop - Ionic + firebase
Workshop - Ionic + firebaseWorkshop - Ionic + firebase
Workshop - Ionic + firebase
 
React
ReactReact
React
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
Criando uma PWA com React para consumir uma API
Criando uma PWA com React para consumir uma APICriando uma PWA com React para consumir uma API
Criando uma PWA com React para consumir uma API
 
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
O uso de PWA e o futuro do desenvolvimento mobile com React Native e Kotlin -...
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Javascript Cross-browser
Javascript Cross-browserJavascript Cross-browser
Javascript Cross-browser
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
Primeiros passos no Vue.js
Primeiros passos no Vue.jsPrimeiros passos no Vue.js
Primeiros passos no Vue.js
 
2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android2017 08-11 - Androidos V - Minicurso - Introdução ao android
2017 08-11 - Androidos V - Minicurso - Introdução ao android
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
 
ASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev WeekASP.NET Core em Linux - Canal .NET Dev Week
ASP.NET Core em Linux - Canal .NET Dev Week
 
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015  - Interfaces Ricas com Rails e React.JSTDC São Paulo 2015  - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript
 

React Native na globo.com

  • 3. ambienteda globo.com • Grandes portais com mais de 50 milhões de acessos diários • Muitos programadores web que adoram JS e mais recentemente React • Nós amamos open source! opensource.globo.com
  • 5. oproblemadasapps dagcom • Problema atual: Todas em webview • One app to rule them all
  • 6. 392 × 690392 × 690 oproblemadasapps dagcom
  • 7. oproblemadasapps dagcom • Primeira App em RN: Techtudo (depois g1, gshow e ge) • Um feed nativo para consumir matérias
  • 8. appshíbridas • Soluções Webview como Cordova / Phonegap / ionic • Reaproveitamento de código forte • Problemas da Webview • “Cross-browser"
  • 9. códigonativo • Objective-C / Swift para iOS • Java para Android • Perfomance otimizada • 2 códigos para as mesmas regras de negócio
  • 10. pocnativo • 1 semana para iOS • 1 semana para Android
  • 11. xamarin • C# com Mono .NET framework e IDE própria • Compilado para interagir com o Java e Obj-C • Reaproveitamento de código
  • 12. react • Lib criada em 2013 pelo Facebook • Performance na escrita de mudanças • Componentização por padrão • Comunidade ativa e open source
  • 13. exemploreact • Criado com create-react-app 1. Estilo inline 2. Props 3. State npm install -g create-react-app create-react-app my-app
  • 15. reactplataformas • “learn once, write everywhere”: 1. Android (suporte Padrão) 2. iOS (suporte Padrão) 3. Windows: https://github.com/ReactWindows/ react-native-windows 4. Ubuntu: https://github.com/CanonicalLtd/ react-native
  • 16. reactnative • Criado em 2015 • JS e React • Estilo via dialeto de CSS / Flexbox • Performance nativa • Não usa webview • Reaproveitamento de código cross-plataforma
  • 17. pocreactnative • 2 semanas para os dois (código único) Muitoobrigado! =)
  • 18. reactnative arquitetura • nenhuma webview • Thread JS (webkit) • Shadow Queue • Main e threads Nativa (inclui UI) • Mais profundamente em: https://www.youtube.com/ watch?v=Ah2qNbI40vE (Tadeu Zagallo)
  • 20. • Códigos: https://github.com/guilhermebruzzi/rnExamples • Exemplo geral 1. Hello World + Reload e hot reload 2. Componentes padrões: Textos, imagens e ListView 3. Routers que usamos reactnative exemplos
  • 21. • Linter (Eslint airbnb) • Flow (vs typescript) • Mobx (vs Redux) • RN Router Flux/ Mobx Router • Webview Bridge • Urban Airship • ES6 fetch • Code Push • Fabric reactnativeconfig nagcom
  • 22. rnconfig rnrouterflux/mobxrouter • React Native router flux: https://github.com/aksonov/react-native-router-flux • React Native mobx: https://github.com/aksonov/react-native-mobx
  • 23. rnconfig linter • Linter (Eslint extendendo eslint-config-airbnb) • Erros na hora
  • 24. Tipagem no meio do javascript // @flow const foo = (b: boolean): string => ( (b) ? 'Hello' : 'World' ); const bar: string = foo(); rnconfig flow
  • 25. const { action, observable } = mobx; const { observer } = mobxReact; class CountStore { @observable count = 0; @action addCount() { this.count++; } @action decCount() { this.count--; } } const store = new CountStore(); @observer class App extends React.Component { render() { return ( <div> <span>Contador: {store.count}</span> <button onClick={() => store.addCount()}> + </button> <button onClick={() => store.decCount()}> - </button> </div> ); } } ReactDOM.render(<App />, document.getElementById('app')); rnconfig mobx Controle de estado global (https://jsbin.com/qizehep)
  • 26. const injectScript = ` WebViewBridge.onMessage = function (message) { console.log('Received from react native', message); }; WebViewBridge.send('hello from webview'); `; class App extends React.Component { onBridgeMessage(message) { const { webviewbridge } = this.refs; console.log('Received from webview', message); webviewbridge.sendToBridge("hello from react-native"); } render() { return ( <WebViewBridge ref="webviewbridge" onBridgeMessage={this.onBridgeMessage.bind(this)} injectedJavaScript={injectScript} source={{uri: "http://google.com"}}/> ); } } rnconfig webviewbridge React Native Webview Bridge: https://github.com/alinz/react-native-webview-bridge
  • 27. import ReactNativeUA from 'react-native-ua'; class App extends Component { constructor(props) { super(props); ReactNativeUA.enable_notification(); ReactNativeUA.handle_background_notification(); ReactNativeUA.set_named_user_id('user_id'); } componentWillMount() { // add handler to handle all incoming notifications ReactNativeUA.on_notification((notification) => { console.log('notification:', notification.data, notification.url, notification.platform); alert(notification.alert); }); } render () { return (<View><Text>ReactNativeUA</Text></View>); } } React Native UA: https://github.com/globocom/react-native-ua rnconfig urbanairship
  • 28. RN Networking: https://facebook.github.io/react-native/docs/network.html Também suporta: 1. XMLHttpRequest (axios) 2. WebSocket fetch('https://facebook.github.io/react-native/movies.json') .then((response) => response.json()) .then((responseJson) => { return responseJson.movies; }) .then((movies) => { console.log('movies', movies); }) .catch((error) => { console.error(error); }); rnconfig fetch
  • 29. RN Code Push: https://github.com/Microsoft/react-native-code-push npm install -g code-push-cli code-push register code-push app add <appName> code-push release-react <appName> <platform> rnconfig codepush
  • 30. • RN Fabric: https://github.com/corymsmith/react- native-fabric • https://fabric.io/ 1. Crashlytics 2. Beta rnconfig fabric
  • 33. • Depender de projetos open source experimentais • Erros que a sua especialidade não está acostumada • Atualizações constantes e quebras de contrato • Ler muito código e estudar muito (relativamente pouca documentação) • Ter que criar bridges para módulos que já existem reactnative desvantagens
  • 35. • Avalie sempre todas as alternativas. Não existe bala de prata! • Versão 0.35 (última, mas lançam uma nova numa média de 2 semanas) • A próxima virá com uma contribuição nossa PR (#9617) • Muitas apps estão nascendo com React Native conclusão
  • 36. • guibruzzi@gmail.com • fb.com/guilhermehbruzzi • github.com/guilhermebruzzi • dev.globo.com (blog da globo.com) • fb.com/globodev • slideshare.net/guilhermebruzzi/react-native-na-globocom contato