Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Redux + RxSwift

Redux + RxSwift

Código que mantém estado escala em complexidade e densidade de bugs ao longo do tempo e a experiência nos ensina a evitá-lo. E ainda assim, a sina inevitável do desenvolvedor de UIs é escrever código que lida com mudanças de estado.

Batemos um papo sobre como unir programação reativa com os conceitos do Redux, uma das estrelas do ecossistema JavaScript em 2017, adaptando esta união ao desenvolvimento moderno de apps iOS em Swift.

Fellipe Caetano

July 20, 2017
Tweet

More Decks by Fellipe Caetano

Other Decks in Programming

Transcript

  1. O que é Redux? Redux é a implementação de um

    container de estado com transições previsíveis. Um container Redux, também chamado de store, é read- only e não pode ser alterado diretamente. As alterações são feitas através do despacho de descritores de modificação conhecidos como ações.
  2. O que é Redux? Ações descrevem o que muda Reducers

    descrevem como muda A view determina quando muda A store notifica a view assim que muda A store age como guardiã das mudanças
  3. O que é RxSwift? É um port Swift das Reactive

    Extensions (Rx), um modelo de computação que abstrai fluxos de dados e eventos através do tempo como se fossem sequências convencionais.
  4. O que é RxSwift? A unidade básica de computação do

    modelo é a interface Observable<T> que define um fluxo de valores através do tempo. A diferença fundamental entre Observables e sequências convencionais é que Observables funcionam de forma assíncrona.
  5. Como integrá-los? A store do Redux emite snapshots de estado

    ao longo do tempo conforme o estado vai sendo alterado. É possível, nestes termos, representar uma store como um Observable, uma sequência de snapshots de estado ao longo do tempo.
  6. Como integrá-los? Isso traz duas vantagens: 1. Podemos utilizar a

    mesma abstração (Observables) para qualquer tipo de fluxo de dados (estado da aplicação, chamadas HTTP, localização do dispositivo, input em formulários et cetera) 2. Podemos usar todo o arsenal de operadores da lib para manipular o estado da aplicação
  7. Sobre mim @fellipecaetano_ @fellipecaetano ‣ Líder em desenvolvimento iOS na

    Sympla ‣ 6+ anos de experiência com tecnologias Apple ‣ Campineiro de nascença e residência ‣ Ex-Movile e ex-Dextra ‣ Graduando em Ciência da Computação pela UNICAMP ‣ Preguiça de Game of Thrones @fellipe