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

Normalizing Redux PT

Normalizing Redux PT

Avatar for João Paulo Siqueira Lins

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