Se precisar dar suporte ao IE11, usar Babel ◦ No back-end ▪ Com Node a partir do 8, não há necessidade do Babel ◦ No Mobile ▪ React Native já vem com Babel JavaScript Hoje
fora ◦ Quando mudados causam o re-render do componente ◦ PropTypes • State ◦ Representação a nível de componente do estado dele ◦ Pode ser alterado apenas via this.setState, que roda de forma assíncrona ◦ Mudanças no state, causam o re-render React
JS ◦ Posicionamento e layout com Flexbox ◦ Ex: StyleSheet.create( { bigGreen: { fontSize: 20, color: ‘green’ } ); • Não temos mais HTML, no lugar temos os componentes fornecidos pelo React Native, ex: View • Hello World: https://snack.expo.io/r1xHxH-Q7 React
deployable, ou seja, pode ir para produção • Todas as mudanças são feitas através de pull requests + merge, através da criação de features branches. Os commits direto na master estão desabilitados • Para resolver conflitos e atualizar com a master, use rebase na sua feature branch Fluxo Git recomendado
Ex: toda comunicação com serviços externos (ex: API), fica dentro da pasta api ◦ Lógicas de view da aplicação (ex: mostrar modal de alerta) ficam dentro de scenes e na common, ficam componentes com lógicas mais triviais (ex: desabilitar botão após o click) ◦ Componentes com lógicas, contém um arquivo [componente].container.js, com a sua lógica (ex: controle de estado), e um arquivo [componente].js, com a declaração da view em si ◦ Detalhes de implementação de estilo ficam no nível mais baixo de componentes (ex: common/Button/Button.js) - e devem ser os menores possível Separação de conceitos e isomorfismo
Ex: em scenes/Dashboard, ficará tudo que é necessário para o dashboard, podendo haver reuso de outros componentes que estão em common ◦ Não pode ter import para outros módulos Separação de conceitos e isomorfismo
como funciona ◦ Component: como parece • Desacoplar das libs e do React em si ◦ O que é acoplado: Components & Container ◦ Todo o resto não deve ser, portanto ▪ Container: apenas a cola dos componentes com a lógica da aplicação ▪ Components: apenas como o componente parece Separação de conceitos e isomorfismo
◦ Animated API • React Native Animatable para animações simples • Atenção para a performance ◦ Usar a flag useNativeDriver ◦ Usar a forma declarativa do React Native Animatable ◦ Testar em smartphones, para o feedback real do impacto das animações Tópicos avançados
nativa da funcionalidade ◦ Não existe um componente que expõe as API nativas ◦ A performance JavaScript está ruim • Recomendações ◦ Criar dentro da pasta native_modules ◦ Usar a CLI react-native-create-bridge para criar o “scaffold” do módulo nativo ◦ Vale testar: Electrode Native Tópicos avançados
Toda comunicação HTTP, deve ser feita via HTTPS • Ao salvar dados sensíveis use o KeyChain (iOS)/Android Keystore • Faça cache apenas de informações não sensíveis • Não permita a app rodar em jailbroken devices (usando libs como o Jail Monkey) • Mantenha as dependências atualizadas Tópicos avançados