Loiane Groner
@loiane
github.com/loiane
loiane.com
loiane.training
ionic reativo
Empodere seu app com RxJS e ngRx
Loiane Groner
@loiane
github.com/loiane
loiane.com
loiane.training
Java, JavaScript/HTML5,
Sencha, Angular, Phonegap/
Ionic
Disponível (inglês) na amazon.com.br
https://novatec.com.br/livros/estruturas-de-dados-algoritmos-em-javascript/
Elevar o padrão de
desenvolvimento dos
seus apps com
programação e padrões
reativos
Stack de tecnologias
+ ==
Tecnologias abordadas
Programação
eativa
http://www.reactivemanifesto.org/pt-BR
Manifesto Reativo
“que reage, responde a estímulos”
Reativo
Reage a dados que são
transmitidos ao longo
do tempo
Reagir a informações
Reagir a usuários
Reagir a erros
Extensões reativas (RxJS)
http://reactivex.io/
Objeto Promise
Iterable Observable
Síncrono Assíncrono
ValorúnicoMúltiplosvalores
Panorama da teoria da reatividade
EcmaScript 2018
+ +
Http
Http Services
Http Services
Http Services
Http Services
Http Services
Operadores
Transformar => map
http://rxmarbles.com/#map
Filtrar informações => filter
http://rxmarbles.com/#filter
Redução => reduce
http://rxmarbles.com/#reduce
Desativar => debounce
http://rxmarbles.com/#debounce
https://yakovfain.files.wordpress.com/2017/04/operators.png
Pipe | async
Pipe Async
Pipe Async
Pipe Async
Observable<boolean>
Observable<Course[]>
async == subscribe + unsubscribe
Formulários Reativos
Formulários Reativos
Formulários Reativos
Padrões
eativos
Gerenciar o estado e
controle de fluxo
COMPONENTE
{…}
SERVIÇO
COMPONENTE
{…}
COMPONENTE
{…}
COMPONENTE
{…}
SERVIÇO
SERVIÇO SERVIÇO SERVIÇO
COMPONENTE
{…}
SERVIÇO
Redux é uma
biblioteca, e também é
um padrão
ACTIONS
REDUCERS STORE VIEW
Redux
dispatch
subscribe
https://github.com/ngrx
Show me the app!
Configuração
@ngrx/store v2.2
Configuração
@ngrx/store v2.2
Estado da App
@ngrx/store v2.2
Estado flui para baixo
store
service / provider
component / page
template
Store select
Store select
Store select
store.select de um pedaço do estado
store.select de um pedaço do estado
reselect
RxJS pode ser usado no lugar do selector
RxJS pode ser usado no lugar do selector
Component -> Template
Component -> Template
Observable<Tasks[]>
async == subscribe + unsubscribe
Component -> Template
Component -> Template
Dumb Component
Componente de apresentação
Componente de apresentação
código + simples
+ fácil de testar
Eventos fluem para cima
store
service / provider
component / page
template
Componente container: dispatch Action
Componente container: dispatch Action
Escuta o evento do componente filho
Componente container: dispatch Action
Escuta o evento do componente filho
Definição das Ações
Definição das Ações
reducer
reducer
imutabilidade
+
reducer
imutabilidade
+
funções puras
Estado inicial - reducer
Store side effects
Efeitos Colaterais
@ngrx/effects
Ajax: 2 ações para cada operação
Effects
Effects
Chamada Service - API
Effects
Chamada Service - API
dispatch ação de sucesso para o reducer
Provider continua o mesmo
@ngrx/router-store
Navegação por pilha
Encadeamento de Effects
Effect para Navegação
Effect para Navegação
Ionic 3 tem Lazy Loading
Nome da página por String
Plugins Cordova
Ionic Native
select Foto
select Foto
select Foto
Observables nos templates!
Streams
Dispatch
Dispatch
Effects com Ionic Native
Effects com Ionic Native
@ngrx/platform (v4)
@ngrx/platform (v4: beta)
@ngrx/platform (v4: beta)
Injeta o estado do módulo no AppState
apenas depois que o módulo for
carregado via lazy loading
Redux DevTools
https://www.npmjs.com/package/ngrx-store-ionic-storage
https://github.com/loiane/ionic3-firebase-ngrx
Pra estudar mais…
• https://angular.io/docs/ts/latest/guide/reactive-forms.html
• https://angular.io/docs/ts/latest/guide/server-communication.html
• https://angular.io/docs/ts/latest/guide/router.html
• https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/categories.md
• https://gist.github.com/btroncone/d6cf141d6f2c00dc6b35
• http://rxmarbles.com/
• http://reactivex.io/documentation/operators
• https://github.com/ngrx
• https://github.com/ngrx/example-app
• https://auth0.com/blog/understanding-angular-2-change-detection/
• http://blog.brecht.io/A-scalable-angular2-architecture/
• http://blog.mgechev.com/2016/04/10/scalable-javascript-single-page-app-angular2-
application-architecture/
Quer aprender mais sobre Angular (2.x e 4.x)?
/loianegroner
https://www.slideshare.net/loianeg
http://loiane.com
facebook.com/loianegroner
twitter.com/loiane
https://github.com/loiane
youtube.com/loianegroner
http://loiane.training

Ionic Reativo com RxJS e ngRx