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

Normalizing Redux PT

Normalizing Redux PT

João Paulo Siqueira Lins

August 29, 2019
Tweet

More Decks by João Paulo Siqueira Lins

Other Decks in Programming

Transcript

  1. • Bacharelado em Eng. Comp. @ UFPE • 3 anos

    trabalhando com desenvolvimento web • Entusiasta de front end João Paulo Lins Desenvolvedor Fullstack @ Vinta /joaopslins [email protected]
  2. We're a team of experts from Brazil. We help our

    clients evolve their products the right way with top notch development and UX techniques. Get to know us: vintasoftware.com
  3. • Dados duplicados são mais complicados de se atualizar. •

    Dados aninhados significa lógica de reducer aninhada. Dados aninhados
  4. • Dados duplicados são mais complicados de se atualizar. •

    Dados aninhados significa lógica de reducer aninhada. • Atualizações à dados aninhados podem gerar renders desnecessários. Dados aninhados
  5. “The more your frontend state looks like a database, the

    easier it is to work with it.” - Dan Abramov
  6. • Dados normalizados - Sem repetições. • Dados estão organizados

    em tabelas. Características de bancos de dados
  7. • Dados normalizados - Sem repetições. • Dados estão organizados

    em tabelas. • Relacionamentos são indicados por Chaves Estrangeiras (FKs). Características de bancos de dados
  8. • Normalizr é uma pequena mas poderosa ferramenta que consome

    JSONs com uma definição de schema e retorna entities aninhadas com seus IDs, agrupadas em dicionários. • https://github.com/paularmstrong/normalizr Normalizr
  9. Normalizr API • A API do Normalizr consiste de: ◦

    schema - Definição de entities ◦ normalize() / denormalize() - transformações
  10. Dica - Seletores • O padrão Seletor é uma abstração

    que padroniza a lógica de acesso do estado da aplicação. • Para qualquer parte do estado que uma aplicação precisa, defina uma função que, dado o estado, retorna uma parte (ou uma derivação) do estado. https://hackernoon.com/selector-pattern-painless-redux-store-destructuring- bfc26b72b9ae
  11. Normalizr + Redux - Boas Práticas • Normalize os dados

    antes de guardá-los no Redux. • Se desnormalizar, atente para a quantidade de dados.
  12. Normalizr + Redux - Boas Práticas • Normalize os dados

    antes de guardá-los no Redux. • Se desnormalizar, atente para a quantidade de dados. • Tenha no estado o mínimo possível, e calcule o que precisar.
  13. Normalizr + Redux - Boas Práticas • Passe os IDs

    das entidades para componentes filhos conectados.
  14. Normalizr + Redux - Boas Práticas • Estrutura de estado

    normalizado => mais componentes estão conectados. • “As it turns out, having connected parent components simply pass item IDs to connected children is a good pattern for optimizing UI performance in a React Redux application, so keeping state normalized plays a key role in improving performance.” -- Documentação do Redux
  15. João Paulo Lins Fullstack Developer /joaopslins [email protected] Obrigado! Perguntas? Acesse

    esta palestra em github.com/vintasoftware/normalizr-redux-talk
  16. Extra - Reselect • getActiveUsers sempre retornará uma nova referência

    • A operação filter irá ocorrer em toda checagem
  17. “Performance optimizations are not free. They always come with a

    cost but do not always come with a benefit to offset that cost. Therefore, optimize responsibly.” - Kent C. Dodds