30-Day Money-Back Guarantee
This course includes:
- 91.5 hours on-demand video
- Full lifetime access
- Access on mobile and TV
Curso React.js Ninja - React Completo
O curso para se tornar um ninja em React, e todas as ferramentas do seu ecossistema!
Rating: 4.5 out of 54.5 (1,130 ratings)
3,949 students
Created by Fernando Daciuk
Last updated 7/2020
Portuguese
30-Day Money-Back Guarantee
What you'll learn
- Criar aplicações utilizando o React.js de forma correta
- Configurar seu ambiente de desenvolvimento e produção
- Usar conceitos de programação funcional em suas aplicações
- Aplicar testes de vários tipos em suas aplicações
- Criar aplicações com rotas, estados isolado e pré-renderização no lado do servidor
Curated for the Udemy for Business collection
Course content
6 sections • 519 lectures • 91h 25m total length
- Preview07:56
- Preview05:15
- 11:23M1#A03 - Começando a trabalhar com React
- 04:33M1#A04 - Criando elementos aninhados
- 09:52M1#A05 - Conhecendo o JSX
- 10:54M1#A06 - Aninhando com JSX e criando componentes
- 03:20MRW#01 - Apresentando minhas configurações de ambiente e o Webpack
- 05:11MRW#01.0.1 - Aula do futuro sobre versões das dependências
- 07:58MRW#02 - Configuração básica do Webpack
- 05:00MRW#03 - Usando o server do Webpack
- 03:50MRW#04 - Modularizando a aplicação
- 08:28MRW#05 - Criando uma aplicação em React
- 14:39MRW#06 - Usando o sistema de módulos do ES6/2015
- 09:52MRW#06.0.1 - Aula do futuro sobre ES Modules
- 06:52MRW#07 - Configurando JSX no babel e sourcemaps no Webpack
- 11:12MRW#08 - Configurando nossa aplicação para usar o React hot loader
- 12:42MRW#09 - Colocando o hot loader para funcionar
- 08:15MRW#10 - Configurando a ferramenta de lint
- 04:49M1#A07 - Passando props
- 04:59M1#A08 - Atributos do HTML
- 05:20M1#A09 - getDefaultProps
- 05:32M1#A10 - Passando outros tipos de dados via props
- 14:10M1#A11 - Renderizando componentes com funções puras
- 05:48M1#A12 - Renderizando componentes com classes do ES6/2015
- 10:38M1#A13 - Conhecendo a prop "key"
- 04:10M1#A14 - Problemas ao duplicar a "key"
- 08:29M1#A15 - Eventos
- 05:52M1#A16 - A prop "children"
- 10:56M1#A17 - Composição
- 08:25M1#A18 - State
- 10:46M1#A19 - Entendendo arrow functions
- 14:33M1#A20 - Stateful vs stateless
- 05:28M1#A21 - Lifecycle dos componentes
- 16:02M1#A22 - Lifecycle: fluxo de montagem / desmontagem
- 04:12M1#A23 - Lifecycle: fluxo de atualização (componentWillReceiveProps)
- 08:52M1#A24 - Lifecycle: fluxo de atualização (shouldComponentUpdate)
- 05:31M1#A25 - Lifecycle: fluxo de atualização (componentWillUpdate)
- 04:28M1#A26 - Lifecycle: fluxo de atualização (componentDidUpdate)
- 10:00M1#A27 - propTypes
- 12:55M1#A28 - Introdução à formulários no React
- 10:32M1#A29 - Formulários (checkbox e radio)
- 06:19M1#A30 - Formulários (select e option)
- 04:46M1#A31 - Formulários (textarea)
- 06:06M1#A32 - Eventos para componente de formulário
- 06:53M1#A33 - setState é assíncrono
- 04:54M1#A34 - Conceitos e tipos de componentes com React, criando uma app (GitHub)
- 10:49M1#A35 - GitHub app - Criando a marcação da aplicação
- 19:03M1#A36 - GitHub app - Separando os componentes
- 11:06M1#A37 - GitHub app - Criando o Container Component da aplicação
- 14:17M1#A38 - GitHub app - Criando o objeto de estado da aplicação
- 07:09M1#A39 - GitHub app - Passando o state via props para o componente UserInfo
- 07:39M1#A40 - GitHub app - Fazendo o request dos dados do usuário
- 10:39M1#A41 - GitHub app - Refatorando a aplicação e populando os dados do usuário
- 10:53M1#A42 - GitHub app - popular dados dos repositórios
- 18:23M1#A43 - GitHub app - método para buscar repositórios e favoritos
- 11:18M1#A44 - GitHub app - buscar repositórios do usuário pesquisado
- 13:28M1#A45 - GitHub app - sobre eventos - desabilitar / habilitar campo de busca
- 09:16M1#A46 - GitHub app - loading enquanto estiver buscando os dados
- 05:33M1#A47 - GitHub app - organizando as propTypes
- 08:51M1#A48 - formas de fazer "bind" do this em eventos
- 10:54M1#A49 - Entendendo o spread operator do ES6/2015
- 12:10M1#A50 - Trabalhando com libs de terceiros junto com React
- 07:55M1#A51 - Um overview sobre testes
- 14:19M1#A52 - TDD
- 16:03M1#A53 - Testes unitários em componentes
- 02:07M1#A54 - Encerramento módulo 1
- 05:32M2#A01 - Introdução
- 13:00M2#A02 - Conhecendo o create-react-app
- 09:43M2#A03 - Jest (overview)
- 08:36M2#A04 - Jest na prática - instalação e configuração
- 08:57M2#A05 - Jest na prática - conhecendo as funções para teste e asserção
- 14:06M2#A06 - Jest na prática - code coverage
- 06:59M2#A07 - Jest na prática - Integração com ES6/2015
- 11:45M2#A08 - Jest na prática - watch interativo
- 12:48M2#A09 - TDD - Assertion tools e desafio método map
- 27:47M2#A10 - TDD - método map
- 11:23M2#A11 - TDD - aprendendo recursão
- 12:25M2#A12 - TDD - map recursivo
- 16:45M2#A13 - TDD - map recursivo - parte 2
- 20:41M2#A14 - TDD - filter
- 09:43M2#A15 - TDD - filter recursivo
- 10:55M2#A16 - TDD - every
- 10:20M2#A17 - TDD - every recursivo
- 09:52M2#A18 - TDD - some
- 05:21M2#A19 - TDD - some recursivo
- 06:48M2#A20 - TDD - reverse
- 14:18M2#A21 - TDD - reverse recursivo
- 12:35M2#A22 - TDD - reduce
- 16:07M2#A23 - TDD - reduce (parte 2)
- 17:19M2#A24 - TDD - reduce recursivo
- 09:30M2#A25 - TDD - reduceRight
- 08:20M2#A26 - TDD - reduceRight recursivo
- 08:57M2#A27 - TDD - find
- 08:43M2#A28 - TDD - find recursivo
- 18:13M2#A29 - TDD - testando exceções
- 14:09M2#A30 - Conhecendo o Storybook
- 14:34M2#A31 - Trabalhando com assets: configuração no Webpack
- 10:14M2#A32 - Trabalhando com assets: HTML
- 09:27M2#A33 - Trabalhando com assets: Exportando CSS em um arquivo
- 11:46M2#A34 - Webpack: gerando bundle de produção
- 04:57M2#A35 - Webpack Dashboard
- 08:22M2#A36 - Trabalhando com assets: Modularizando o CSS
- 07:24M2#A37 - Trabalhando com assets: CSS Modules
- 10:31M2#A38 - Trabalhando com assets: Critical Rendering Path
- 13:37M2#A39 - Trabalhando com assets: Otimizando o Critical Rendering Path
- 02:31M2#A40 - Trabalhando com assets: Ajustando ambiente de dev
- 04:17M2#A41 - cross-env
- 09:46M2#A42 - criando alias no webpack
- 14:19M2#A43 - Configurando o Storybook
- 10:27M2#A44 - Storybook - escrevendo histórias reais
- 13:39M2#A45 - Storybook - extendendo o webpack.config padrão
- 07:33M2#A46 - Storybook - localização do arquivo de config, linter e static build
- 12:54M2#A47 - Storybook - criando histórias para os outros componentes
- 09:58M2#A48 - Paginação - criando o componente
- 04:22M2#A49 - Conhecendo o Yarn
- 06:05M2#A50 - Paginação - ambiente para testes
- 09:03M2#A51 - Paginação - ambiente para testes - linter
- 15:40M2#A52 - Paginação - implementação inicial
- 10:34M2#A53 - Paginação - implementação - parte 2
- 15:50M2#A54 - Paginação - implementação - parte 3
- 08:36M2#A55 - Paginação - implementação - parte 4
- 16:12M2#A56 - Paginação - implementação - parte 5
- 15:54M2#A57 - Paginação - testando as excessões
- 09:43M2#A58 - Paginação - storybook
- 08:49M2#A59 - Paginação - storybook - parte 2
- 10:16M2#A60 - Paginação - storybook - parte 3
- 06:46M2#A61 - Paginação - storybook - parte 4
- 09:44M2#A62 - Abstraindo configuração padrão do webpack
- 16:45M2#A63 - Abstraindo configuração padrão do webpack - parte 2
- 06:05M2#A64 - Abstraindo configuração padrão do webpack - parte 3
- 06:27M2#A65 - Adicionando paginação na aplicação
- 03:51M2#A66 - Colocando a paginação pra funcionar
- 13:21M2#A67 - Trocando de página
- 13:27M2#A68 - Adicionando parâmetros de paginação para os repositórios
- 07:31M2#A69 - Ajustando as proptypes do state para paginação
- 02:54M2#A70 - Acertando informações da paginação - página ativa
- 19:17M2#A71 - Acertando informações da paginação - total de páginas
- 17:50M2#A72 - Webpack - atualizando nosso boilerplate para webpack v2
- 16:24M2#A73 - Atualização do Webpack - atualizando as dependências
- 04:19M2#A74 - Atualização do Webpack - removendo dependências não utilizadas
- 07:59M2#A75 - Atualização do Webpack - atualizar storybook e remover erros
- 11:10M2#A76 - Atualização do Webpack - o que o tree shaking e como configurar
- 15:05M2#A77 - ES6 - Promises
- 04:53M2#A78 - webpack clean plugin
- 08:37M2#A79 - ES7 - async / await
- 11:30M2#A80 - Adicionando async / await no nosso workflow
- 13:54M2#A81 - Ajustando storybook
- 07:38M2#A82 - Centralizar paths do webpack no common.js
- 11:24M2#A83 - Introdução à code splitting
- 06:36M2#A84 - CommonsChunkPlugin
- 13:42M2#A85 - CommonsChunkPlugin - opções do plugin
- 15:17M2#A86 - import() dinâmico
- 07:42M2#A87 - import() dinâmico - e o linter?
- 13:24M2#A88 - webpack - file-loader: imagens e outros assets além de CSS
- 05:09M2#A89 - webpack - url-loader: imagens e outros assets além de CSS
- 03:52M2#A90 - webpack - raw-loader: pegando conteúdo de qualquer tipo de arquivo
- 11:09M2#A91 - webpack - adicionando o file-loader e url-loader no nosso boilerplate
- 11:52M2#A92 - this.setState() - usando funções fazer atualizações em lote
- 06:12M2#A93 - Configuração do preloader do storybook
- 14:51M2#A94 - Aplicação: editor de Markdown
- 11:01M2#A95 - Aplicação: editor de Markdown - melhorando a estrutura inicial
- 10:40M2#A96 - Aplicação: editor de Markdown - renderizando HTML
- 03:26M2#A97 - webpack - ajustando loader de CSS para depências externas
- 05:08M2#A98 - Aplicação: editor de Markdown - adicionando opção de markdown no editor
- 09:42M2#A99 - Aplicação: editor de Markdown - colorindo blocos de código
- 10:42M2#A100 - Aplicação: editor de Markdown - como fica em produção?
- 08:25M2#A101 - Aplicação: editor de Markdown - analisando bundle de produção
- 10:08M2#A102 - Aplicação: editor de Markdown - melhorar bundle de produção
- 16:31M2#A103 - Aplicação: editor de Markdown - ordenando os scripts no HTML
- 08:17M2#A104 - Aplicação: editor de Markdown - highlight.js assíncrono
- 15:28M2#A105 - Aplicação: editor de Markdown - reduzindo o bundle de produção
- 10:00M2#A106 - Aplicação: editor de Markdown - servindo arquivos comprimidos com gzip
- 07:23M2#A107 - react dev tools - conhecendo a ferramenta
- 10:26M2#A108 - Aplicação: editor de Markdown - persistência de dados
- 15:38M2#A109 - Aplicação: editor de Markdown - removendo ações do comp. stateless
- 09:33M2#A110 - Aplicação: editor de Markdown - salvando automaticamente
- 11:46M2#A111 - Aplicação: editor de Markdown - feedback de salvamento automático
- 17:08M2#A112 - Aplicação: editor de Markdown - removendo do localStorage
- 13:29M2#A113 - Aplicação: editor de Markdown - criar arquivos MD
- 15:27M2#A114 - Aplicação: editor de Markdown - oportunidades de melhorias
- 08:06M2#A115 - Aplicação: editor de Markdown - storybook do botão
- 13:28M2#A116 - Aplicação: editor de Markdown - mais oportunidades de refactory
- 11:02M2#A117 - Aplicação: editor de Markdown - atualização do React 15 - 15.5 - 16
- 11:20M2#A118 - Aplicação: editor de Markdown - conhecendo a lib strclass
- 17:08M2#A119 - Aplicação: editor de Markdown - adicionar novo MD no localStorage
- 08:48M2#A120 - Aplicação: editor de Markdown - lista de arquivos MD (componente)
- 11:21M2#A121 - Aplicação: editor de Markdown - popular a lista de arquivos MD
- 11:13M2#A122 - Aplicação: editor de Markdown - remover arquivos dinamicamente
- 03:23M2#A123 - Aplicação: editor de Markdown - editar e adicionar arquivos no state
- 08:06M2#A124 - Aplicação: editor de Markdown - adicionar título para arquivos
- 05:07M2#A125 - Aplicação: editor de Markdown - remover entradas que não são arquivos
- 06:20M2#A126 - Aplicação: editor de Markdown - componente para título do arquivo
- 12:50M2#A127 - Aplicação: editor de Markdown - opção para editar título
- 10:42M2#A128 - Aplicação: editor de Markdown - usando só uma entrada no localStorage
- 17:09M2#A129 - Conhecendo o PureComponent
- 13:21M2#A130 - Introdução à context API
- 08:33M2#A131 - Context API - Trabalhando com informações dinâmicas
- 08:15M2#A132 - Context API - Resolvendo shouldComponentUpdate retornando false
- 13:54M2#A133 - Context API - Atualizando context à partir da emissão de eventos
- 09:35M2#A134 - Context API - Unsubscribe está funcionando?
- 15:38M2#A135 - Higher Order Component (HOC) - Entendendo o que é um HOC
- 14:57M2#A136 - Context API - Isolando o context usando HOC
- 11:39M2#A137 - Testes - Conhecendo os snapshots
- 14:51M2#A138 - Testes - Atualizando Jest no workflow e criando teste de snapshot
- 10:06M2#A139 - Aplicação: editor de Markdown - testando componentes
- 11:15M2#A140 - Enzyme - Testando lógica em componentes
- 02:56M2#A141 - Encerramento módulo #02
- 07:14M3#A01 - Introdução
- 01:58M3#A02 - O que é, e para que serve Redux?
- 09:19M3#A03 - Conhecendo o Redux - Primeiro princípio
- 06:55M3#A04 - Conhecendo o Redux - Segundo princípio
- 04:26M3#A05 - Conhecendo o Redux - Terceiro princípio - Funções Puras
- 04:23M3#A06 - Conhecendo o Redux - Terceiro princípio - Reducer
- 08:14M3#A07 - Primeiro contato com Redux
- 11:37M3#A08 - Criando nosso primeiro reducer com testes
- 11:51M3#A09 - Adicionando redux na aplicação Contador
- 09:20M3#A10 - Colocando o contador pra funcionar
- 13:50M3#A11 - Como funciona o createStore()?
- 12:05M3#A12 - "Contador" no React
- 10:03M3#A13 - "Contador" no React - estado no Redux
- 11:23M3#A14 - "Contador" no React - estado no Redux - parte 2
- 11:33M3#A15 - "Contador" no React - estado no Redux - parte 3
- 10:17M3#A16 - Adicionando mais contadores
- 11:02M3#A17 - Adicionando mais contadores - parte 2
- 07:07M3#A18 - Adicionando mais contadores - testes
- 09:19M3#A19 - Adicionando mais contadores - testes - parte 2
- 09:58M3#A20 - Adicionando mais contadores - testes - parte 3
- 09:00M3#A21 - Adicionando mais contadores - testes - parte 4
- 15:26M3#A22 - Adicionando mais contadores - componente
- 11:00M3#A23 - Adicionando mais contadores - action creators
- 11:53M3#A24 - App Todo List
- 10:29M3#A25 - App Todo List - Atualização do boilerplate
- 09:12M3#A26 - App Todo List - Atualização do storybook
- 03:03M3#A27 - App Todo List - Configuração: exibição de erros
- 06:51M3#A28 - App Todo List - Implementação inicial
- 10:05M3#A29 - App Todo List - Reducer para lista de todos
- 13:04M3#A30 - App Todo List - Reducer para lista de todos - parte 2
- 06:15M3#A31 - App Todo List - Reducer para lista de todos - parte 3
- 08:27M3#A32 - App Todo List - Implementação do reducer todos - configuração do Redux
- 02:57M3#A33 - App Todo List - Implementação do reducer todos - Config do React Redux
- 19:33M3#A34 - App Todo List - Implementação do reducer de todos - Add Todo
- 03:59M3#A35 - App Todo List - Implementação do reducer de todos - Lista
- 13:38M3#A36 - App Todo List - Implementação do reducer de todos - Toggle Todo
- 10:42M3#A37 - App Todo List - Implementação do reducer de visibilityFilter
- 13:19M3#A38 - App Todo List - Implementação do reducer de visibilityFilter - parte 2
- 11:36M3#A39 - App Todo List - Como usar mais de um reducer?
- 05:07M3#A40 - App Todo List - combineReducers
- 08:08M3#A41 - App Todo List - Implementação manual do combineReducers
- 18:46M3#A42 - App Todo List - Isolar componentes
- 04:22M3#A43 - App Todo List - Nomes para actions
- 11:37M3#A44 - App Todo List - Conectar filtro no state
- 10:51M3#A45 - App Todo List - Atualizar estado do filtro
- 12:07M3#A46 - App Todo List - Refactory no link do componente filtro
- 10:52M3#A47 - App Todo List - Mostrar todos filtrados
- 11:15M3#A48 - padrão para criação de reducers com o createReducer()
- 11:55M3#A49 - criando a função createReducer()
- 07:46M3#A50 - Busca CEP - Usando async no Redux
- 07:23M3#A51 - Busca CEP - Estilos CSS para aplicação
- 09:53M3#A52 - Busca CEP - Buscar endereço à partir de um CEP
- 09:13M3#A53 - Busca CEP - Populando tabela com dados do endereço
- 05:46M3#A54 - Busca CEP - buscando endereço à partir do form
- 10:12M3#A55 - Busca CEP - melhorando experiência do usuário
- 14:33M3#A56 - Busca CEP - criar reducer de endereços
- 12:03M3#A57 - Busca CEP - testes para createReducer
- 19:54M3#A58 - Busca CEP - testes para createReducer - parte 2
- 12:10M3#A59 - Busca CEP - passando state do endereço do Redux para a aplicação
- 08:20M3#A60 - Busca CEP - passando dispatch como props
- 08:46M3#A61 - Busca CEP - initialState da aplicação
- 05:34M3#A62 - replaceReducer - hot reload para reducers
- 11:58M3#A63 - Busca CEP - extendendo o Redux com middlewares
- 19:17M3#A64 - Busca CEP - entendendo o poder dos middlewares
- 14:21M3#A65 - Busca CEP - ações assíncronas no app com Redux - configuração da store
- 15:04M3#A66 - Busca CEP - ações assíncronas no app com Redux
- 15:42M3#A67 - Busca CEP - ações assíncronas no app com Redux - isFetching no Redux
- 14:11M3#A68 - Busca CEP - usando mais de um store enhancer no Redux
- 15:55M3#A69 - Busca CEP - como funciona o compose?
- 03:39M3#A70 - Reactflix - Instruções para criação do nosso app
- 15:27M3#A71 - Reactflix - Setup inicial da aplicação
- 13:04M3#A72 - Reactflix - Estrutura base da aplicação
- 15:17M3#A73 - Reactflix - Lista de vídeos
- 11:50M3#A74 - Reactflix - Melhorando estilo do componente de vídeo
- 10:55M3#A75 - Reactflix - Single de vídeo
- 09:53M3#A76 - Reactflix - Firebase
- 15:51M3#A77 - Reactflix - Lendo dados do Firebase
- 07:16M3#A78 - Reactflix - Adicionando dados do Firebase
- 05:31M3#A79 - Reactflix - Editando dados do Firebase
- 06:10M3#A80 - Reactflix - Removendo dados do Firebase
- 11:26M3#A81 - Reactflix - Remover firebase global
- 06:05M3#A82 - Reactflix - Criar formulário de cadastro do vídeo
- 12:03M3#A83 - Reactflix - Criar ação de adicionar vídeo
- 11:17M3#A84 - Reactflix - Adicionar Vídeo dinamicamente
- 08:03M3#A85 - Reactflix - Salvar vídeo no Firebase
- 09:52M3#A86 - Reactflix - Limpar formulário após salvar vídeo
- 10:39M3#A87 - Reactflix - Opção para abrir / fechar formulário de cadastro
- 10:34M3#A88 - Reactflix - Extrair Header e Footer do App
- 15:31M3#A89 - Reactflix - Reducer de UI
- 15:41M3#A90 - Reactflix - Pegar dados cadastrados no Firebase
- 08:59M3#A91 - Reactflix - Link para vídeos na listagem
- 12:32M3#A92 - Reactflix - Abrir vídeo na single ao clicar
- 17:46M3#A93 - Reactflix - Ordenar conteúdo que vem do Firebase
- 06:06M3#A94 - Encerramento do módulo #03
- 06:11M4#A01 - Introdução
- 10:07M4#A02 - Instalação do React Router
- 12:39M4#A03 - Componentes principais do React Router
- 09:43M4#A04 - Criando mais de uma rota
- 07:53M4#A05 - Problema na configuração do webpack do boilerplate
- 12:17M4#A06 - Rotas dinâmicas - passando parâmetros na rota
- 13:18M4#A07 - Conceitos de SPA - o request de uma rota
- 11:57M4#A08 - Conceitos de SPA - History API
- 11:01M4#A09 - Conceitos de SPA - History API - evento onpopstate
- 09:36M4#A10 - Conceitos de SPA - History API - método replaceState
- 06:15M4#A11 - Conceitos de SPA - History API - resolvendo problema reload da página
- 09:34M4#A12 - Component Switch e Erro 404
- 09:16M4#A13 - Rotas dinâmicas - definindo rotas específicas
- 12:29M4#A14 - NavLink - componente especial para navegação
- 09:19M4#A15 - Route - prop "render"
- 12:29M4#A16 - Route - prop "children"
- 07:46M4#A17 - React Pattern - Render Props
- 14:05M4#A18 - Route Props - match e parâmetros opcionais
- 09:52M4#A19 - Route Props - location (pathname e key)
- 05:45M4#A20 - Route Props - location (hash)
- 10:13M4#A21 - Route Props - location (search)
- 10:09M4#A22 - Route Props - location (state)
- 08:40M4#A23 - Route Props - history (location e length)
- 07:07M4#A24 - Route Props - history (método push)
- 03:25M4#A25 - Route Props - history (método replace)
- 05:39M4#A26 - Route Props - history (action)
- 06:37M4#A27 - Route Props - history (navegação no history)
- 11:43M4#A28 - Componente Redirect
- 05:50M4#A29 - Componente Prompt
- 08:36M4#A30 - withRouter()
- 06:17M4#A31 - <HashRouter />
- 09:42M4#A32 - Problemas conhecidos - Rota que não renderiza
- 09:28M4#A33 - Informações iniciais sobre a aplicação React-zzaria
- 09:41M4#A34 - React-zzaria - iniciando o projeto
- 06:47M4#A35 - React-zzaria - Entendendo variáveis de ambiente (.env)
- 09:24M4#A36 - Novidades do React v16 - Fragment
- 18:04M4#A37 - Novidades do React v16 - lazy e Suspense
- 14:44M4#A38 - React-zzaria - Tratamento de erros em componentes (Error Boundaries)
- 07:07M4#A39 - React-zzaria - "Logar" mensagens de erro (Error Boundaries)
- 09:55M4#A40 - React-zzaria - Limpando o CRA (dependências exatas)
- 04:41M4#A41 - React-zzaria - Limpando o CRA (removendo arquivos desnecessários)
- 12:41M4#A42 - React-zzaria - Adicionando configs. básicas (.editorconfig e linter)
- 07:08M4#A43 - React-zzaria - Extendendo configurações do CRA sem ejetar
- 11:20M4#A44 - React-zzaria - Corrigindo erros de lint
- 12:53M4#A45 - React-zzaria - Arquitetura da aplicação: rotas iniciais
- 07:00M4#A46 - React-zzaria - Rotas internas no MainPage
- 04:26M4#A47 - React-zzaria - Usando alias no CRA
- 09:32M4#A48 - React-zzaria - Dependências de UI e configs iniciais de estilo
- 09:43M4#A49 - React-zzaria - Marcação para tela de login
- 14:20M4#A50 - React-zzaria - Grid na tela de login
- 07:31M4#A51 - React-zzaria - Estilos para tela de login (alinhamento)
- 11:32M4#A52 - React-zzaria - Estilos para tela de login (botão)
- 03:14M4#A53 - React-zzaria - propriedade attrs do styled components
- 05:25M4#A54 - React-zzaria - Melhorando estilo do botão
- 10:45M4#A55 - React-zzaria - Autenticação: Criação do projeto no Firebase
- 05:30M4#A56 - React-zzaria - Autenticação: Configurar firebase no app
- 08:17M4#A57 - React-zzaria - Login do usuário
- 09:22M4#A58 - React-zzaria - Persistência de dados e informações do usuário logado
- 11:35M4#A59 - React-zzaria - Deslogar usuário
- 04:59M4#A60 - Novidades do React v16.8 - Hooks
- 12:14M4#A61 - React Hooks - conhecendo o useState
- 05:39M4#A62 - React Hooks - useState: atualizar com base no estado anterior
- 05:05M4#A63 - React Hooks - useState: estados complexos
- 08:29M4#A64 - React Hooks - useState: arrays e objetos
- 06:37M4#A65 - React Hooks - efeitos colaterais
- 07:10M4#A66 - React Hooks - useEffect: atualização condicional
- 07:37M4#A67 - React Hooks - useEffect: executando somente uma vez
- 05:27M4#A68 - React Hooks - Criando Hooks personalizados
- 04:41M4#A69 - React Hooks - useEffect: simulando o componentWillUnmount
- 05:16M4#A70 - React Hooks - Regras para uso dos Hooks
- 09:15M4#A71 - React-zzaria - Trocar class por hooks na página de login
- 09:07M4#A72 - React-zzaria - Otimização de callbacks
- 10:25M4#A73 - React-zzaria - Importar páginas com lazy e Suspense
- 04:42M4#A74 - React-zzaria - Isolar configuração do firebase
- 14:07M4#A75 - Novidades do React v16 - Context API
- 12:09M4#A76 - React-zzaria - Estrutura inicial para dados do usuário na Context API
- 05:51M4#A77 - React-zzaria - Dados do usuário na Context API (login)
- 11:00M4#A78 - React-zzaria - Dados do usuário na Context API (App)
- 15:29M4#A79 - React-zzaria - React-zzaria - Regras de redirects pré/pós autenticação
- 13:02M4#A80 - React-zzaria - Evitar redirects desnecessários
- 05:38M4#A81 - React-zzaria - Refatorar regras de redirects
- 11:16M4#A82 - React-zzaria - Página inicial (header)
- 04:14M4#A83 - React-zzaria - Página inicial (parte 2 - header)
- 05:17M4#A84 - React-zzaria - Página inicial (CSS do header)
- 10:43M4#A85 - React-zzaria - Página inicial (regras lógicas no header)
- 01:54M4#A86 - React-zzaria - Página inicial - mover logo para diretório comum
- 08:27M4#A87 - React-zzaria - Adicionar hot-loader no CRA
- 08:15M4#A88 - React-zzaria - Página inicial (conteúdo)
- 17:56M4#A89 - React-zzaria - Como usar Temas no Material U
- 11:31M4#A90 - React-zzaria - Marcação do conteúdo da página principal
- 08:49M4#A91 - React-zzaria - Estilo para página principal
- 11:23M4#A92 - React-zzaria - Estilo para página principal (imagem da pizza)
- 08:46M4#A93 - React-zzaria - Estilos para página principal (responsivo)
- 04:28M4#A94 - React-zzaria - helper para singular e plural
- 13:29M4#A95 - React-zzaria - Refactoring: isolando componentes (Header)
- 08:14M4#A96 - React-zzaria - Refactoring: abstração das informações do usuário
- 09:51M4#A97 - React-zzaria - Refactoring: estrutura para páginas internas
- 06:29M4#A98 - React-zzaria - Refactoring: organizar dados fake
- 24:34M4#A99 - Refactoring: atualização de dependências e correção de erros
- 08:09M4#A100 - React-zzaria - Preparar navegação para tela de escolha de sabores
- 16:53M4#A101 - React-zzaria - rota para escolha de sabores da pizza
- 12:37M4#A102 - React-zzaria - Refactoring: abstrair nomes das rotas
- 25:04M4#A103 - React-zzaria - Página "Escolha de sabores"
- 09:27M4#A104 - React-zzaria - Estrutura de dados para sabores das pizzas
- 16:57M4#A105 - React-zzaria - Marcação da listagem de sabores
- 08:39M4#A106 - React-zzaria - Listagem de sabores (alinhamento e link)
- 12:11M4#A107 - React-zzaria - Regras para seleção de sabores
- 13:45M4#A108 - React-zzaria - Regras seleção de sabores (selecionar quantidade certa)
- 05:38M4#A109 - React-zzaria - Regras para seleção de sabores (estilo da seleção)
- 07:30M4#A110 - React-zzaria - Tema do Material UI no styled-components
- 20:05M4#A111 - React-zzaria - Variáveis do tema do Material UI em todo o app
- 08:15M4#A112 - React-zzaria - Apresentação dos valores de moeda (helper)
- 13:57M4#A113 - React-zzaria - Estrutura inicial do footer
- 07:21M4#A114 - React-zzaria - Deixar o footer sempre no rodapé
- 07:41M4#A115 - React-zzaria - Ajustar estilo quebrado dos styled components
- 03:42M4#A116 - React-zzaria - Elementos internos do footer (Grid para os itens)
- 09:05M4#A117 - React-zzaria - Área do pedido no footer
- 07:29M4#A118 - React-zzaria - Área com botões de ação no footer
- 12:23M4#A119 - React-zzaria - Abstrair informações de auth para Hook customizado
- 07:05M4#A120 - React-zzaria - Criar página de escolha de quantidade
- 08:28M4#A121 - React-zzaria - Marcação inicial da página de escolha de quantidade
- 11:43M4#A122 - React-zzaria - Mover footer para reutilização
- 05:53M4#A123 - React-zzaria - Botões dinâmicos no footer
- 05:18M4#A124 - React-zzaria - Adicionar Footer na página de quantidade
- 19:55M4#A125 - React-zzaria - Informação de sabores no footer
- 09:21M4#A126 - React-zzaria - Ajustar botão de "voltar" no footer
- 03:46M4#A127 - React-zzaria - Não permitir passar sem selecionar sabor