Código
https://github.com/labcodes/react-redux
Slides
https://speakerdeck.com/thulioph/redux-101
Anotações
- Atualizar o readme
- src/data?
- src/routes?
- Utiliza um middleware em nodejs
- express
- Utiliza JWT
- para autenticação
- Utiliza o thunk para disparar actions assíncronas
- Estrutura das páginas
- src/pages (atualmente)
- src/containers (aconselhável)
- Estrutura dos componentes
- dashboard/Dashboard.js (atualmente)
- dashboard/index.js (aconselhável)
- Rotas
- Toda a lógica das rotas deveria ficar no mesmo lugar
- é utilizado dentro da página de login
- Padronização de código
- é preferível criar constantes antes do return do render, ao invés de no render utilizar this.algumaCoisa (Login.js)
- Componentes que apenas renderizam algo (src/pages/dashboard.js)
- podem ser escritos utilizando JSX
- não tem necessidade de constructor
- o state pode ficar fora do constructor
- múltiplos componentes no mesmo arquivo (src/pages/dashboard.js)
- dificulta o teste
- dificulta o re-aproveitamento
- Repetição de código do footer
- src/pages/errorpage.js
- src/pages/login.js
- Requisições
- devem ser feitas no componentDidMount ao invés do componentWillMount (src/pages/template.js)
- Deve-se separar o fetch das actions (src/actions/templates.js)
- Lógica
- Deve-se separar a lógica de actions
- criar um arquivo para realização do fetch
- as actions não devem realizar requisição (src/actions/**.js)
- CSS
- o arquivo theme.scss faz um import de uma URL do google fonts, onde a mesma, poderia ser adicionada ao header e carregada pelo HTML
- Redux
- actions/reducers/store
- normalmente ficam no mesmo arquivo
- actions para diferentes ações, e comportamentos compartilhados
Sugestões
- Se você precisa que uma determinada ação, ou dado, seja compartilhado entre os componentes/containers, esta informação deve vim de uma store.
- Diminua a quantidade de código atrelado ao framework e escreva mais javascript
- utilização de JSX
- Escreva pequenos componentes, que possam ser re-aproveitados
- Remova código não utilizado
- handleEmptyState (src/pages/dashboard.js)
- existem mais coisas como essa em outros códigos
- chatToggle (src/components/layout.js)
- a linha 80 é complicada de entender o que vai acontecer na classe