Escolar Documentos
Profissional Documentos
Cultura Documentos
• Github do facebook
▪ https://github.com/facebook/react-native
React native
• Comunidades
▪ Stack Overflow
✓ Fazer uma pergunta
▪ Twitter
✓ https://twitter.com/reactnative
▪ Blog
✓ https://reactnative.dev/blog
▪ Reactiflux Discord
✓ https://discord.com/invite/JuTwWB8rsy
▪ DevTo Community
✓ https://dev.to/t/reactnative
Alguns comandos do NPM
Fonte: https://docs.npmjs.com/cli/v6/commands/npm-run-script
Como funciona
desenvolvimento mobile?
1. Ter as ferramentas necessárias
2. Programar
3. Testar o aplicativo:
1. Emulador
2. No seu celular
3. Expo
4. Exportar seu aplicativo
5. Publicar o App (playStore) ou
6. Instalar diretamente em qualquer
celular
Dois caminhos para desenvolver
usando RN.
• Caminho 1:
▪ Mais fácil;
▪ Mais rápido
▪ Exige menos computador
▪ Negativos: não ter os 100% dos recurso nativos
▪ Uso do software Expo
• Caminho 2:
▪ Exige mais de computador(android studio, Xcode)
▪ Exige mais configuração (SDK e emulatores)
▪ Tem os 100% dos recursos nativos
Ambiente de desenvolvimento
• Configurações no link abaixo:
✓ https://react-native.rocketseat.dev/
Criando projetos React Native
Sdk do android
React native com Expo
Introdução
Expo React native
• Documentação instalação e CLI
▪ https://docs.expo.io/get-started/installation/
▪ https://docs.expo.dev/workflow/expo-cli/
• Portanto
▪ É um framework com o objetivo de gerenciar o
ambiente de desenvolvimento
✓ resolve todo o processo de configuração de
ambiente
▪ link da documentação do expo
✓ https://docs.expo.dev/versions/latest/
Usando o Expo
• Projeto com Expo
▪ requisitos para funcionamento do expo
✓ Node.js LTS release, Git, Watchman for macOS users
▪ ferramentas recomendadas
✓ VSCode Editor, Yarn e Windows users: PowerShell
▪ Instalação do expo (version do nodejs entre 12 e 17)
✓ npm install --global expo-cli
▪ Verificar se a instalação foi sucesso
✓ expo -- version
✓ Ou expo whoami
https://docs.expo.dev/get-started/create-a-new-app/
Criando o Projeto Expo
Bare workflow
1. Com o expo instalado criar nosso projeto.
✓ expo init nomeProjeto (nas versões do Nodejs
entre 12 a 17 e Expo SDK versões menores que46
✓ npx create-expo-app --template (nodejs 18
acima e expo sdk 46 acima)
2. Escolhe a opção minimal do Bare (Blank)
3. Acessar a pasta do projeto e abrir no visual code
4. Depois criar um arquivo tsconfig.json e mudar a
extensão do App.js para App.tsx
5. Executar npx expo start
a) Vai identificar que tem um arquivo tsconfig.json e
vai perguntar se quer usar typescript.
– responde Y
Projeto usando CLI do RN
• Usando o emulador android ou IOS
1. Configurando o ambiente
✓ https://reactnative.dev/docs/environment-setup
2. Criando um projeto sem typescript
▪ npx react-native init nomeProjeto
3. Criando o projeto com typescript
✓ npx react-native init AwesomeTSProject --template
react-native-template-typescript
4. Preparando dispositivo físico Android
✓ https://reactnative.dev/docs/running-on-device
5. Emulador
✓ https://reactnative.dev/docs/environment-setup
Entendendo o Básico
• Componentização
▪ Nativos
✓ <Text></Text>
▪ Personalizados
✓ Criado pelo programador
Entendendo o Básico
• Componentização:
▪ Ver exemplos
Entendendo o Básico
• Componentização
▪ children
✓ Permite que o componente X aceite incluir filhos
(outros componentes) dentro dele.
– Durante a instanciação de X
✓ https://www.carlrippon.com/react-children-with-
typescript/
✓ https://medium.com/@martin_hotell/react-children-
composition-patterns-with-typescript-56dfc8923c64
Entendendo o Básico
• Prop children
▪ Exemplos:
Hooks no React native
https://reactjs.org/docs/hooks-intro.html
Hooks no React native
• Regra de nomenclatura
▪ use
▪ Nome do Hook usar Camel case
https://reactjs.org/docs/hooks-intro.html
Estados no React native
• É todo dado que varia com o tempo.
• São assíncronos
• É uma propriedade do componente onde
colocamos dados que, quando mudados,
▪ devem causar uma nova renderização.
https://reactnative.dev/docs/tutorial#state
https://devsamurai.com.br/react-native-basics-props-states/
Estados no React native
• Segue o princípio da imutabilidade
▪ O estado não pode ter seu formato alterado
diretamente. Somente de leitura
✓ (adição, edição)
✓ Evitar métodos que altera diretamente o estado
– Ex: método push() do array
• Instalação
▪ npm install styled-componentes@5.3.10
✓ npm install @types/styled-components -D
▪ Versão 6.08 atual. Já estão tipados
✓ npm install styled-componentes
Estilização
• StyledComponent
▪ Utilizando extensão para utilizar a sintaxe do highlights do css
Estilização
• StyledComponent
Estilização
• StyledComponent com props
▪ Colocar atributos nos componentes estilizados
Estilização
• Design System e Style Guide
Estilização
• Design System e Style Guide
Estilização
• Design System e Style Guide
Estilização
• Design System e Style Guide
Estilos globais
• Criei uma pasta
chamada global dentro
de src
▪ Dentro adicionamos uma
pasta styles contendo:
✓ Um arquivo theme.ts
StyledComponent
• Gestão de temas
▪ conseguimos criar temas para estilizar nossa
aplicação
✓ Usando Javascript
▪ Componentes usado do style-componentes
✓ ThemeProvider
– Possui a propriedade theme que atribui:
» o arquivo o theme.ts
– Deixa cores, fontes e outros acessível por todas
páginas
Estilos globais
• Depois importar um componente do styled-
componentes e instanciá-lo
StyledComponent
• Gestão de temas
▪ Acessando o theme na estilização
✓ Por meio da propriedade
Estilos globais
• Em projetos typescripts é necessário tipar
essa propriedade theme do styled-
componentes
▪ A fim de entender qual o tipo de objeto passado
• Criamos um arquivo styled.d.ts na pasta @types
Estilos globais
• Depois de tipar, o autocomplete do vscode vai
funcionar, baseado nos tokens do nosso tema.
Fontes personalizadas
• É muito importante usar fontes externas para
deixar o App mais estilizado e usável
• Para usar um fonte é necessário
▪ Instalar uma fonte que deseja
• Fontes:
▪ https://fonts.google.com/
▪ https://docs.expo.dev/guides/using-custom-fonts/
Fontes personalizadas
• Depois importar no App.tsx
▪ por que aqui toda aplicação inicia
▪ https://reactnative.dev/docs/activityindicator
Fontes personalizadas
• Depois incluímos as fontes no theme.ts
▪ adicionando uma propriedade fonts contendo as
fontes
• Utilizando a biblioteca
▪ yarn add react-native-responsive-fontsize
✓ https://www.npmjs.com/package/react-native-responsive-fontsize