.Caminho 1
Instalar EXPO
Instalar nodejs https://nodejs.org/pt-br/download/
verificar versão do node
npm --version
npm install -g expo-cli
Verificar se existe a versão do Expo
expo --version
Criando o primeiro projeto e rodando
expo login
expo logout
iniciar projeto
expo init PrimeitoExpoTeste --npm
Usando o Snack
https://expo.dev/snacks
Rodar aplicativos facilmente
Módulo 2: Instalando em ambiente Windows
verificar versão do node
npm --version
python2
e JDK8
Instalando o React Native CLI
npm install -g react-native-cli
Instalando o Android Studio
https://developer.android.com/


Configurando Variáveis de Ambiente
ANDROID_HOME
C:\Users\Giovane Bertol\AppData\Local\Android\Sdk

Adicionar o ANDROID_HOME e Também adicionar o caminho do SDK no PATH
ANDROID_TOOL
"C:\Users\Giovane Bertol\AppData\Local\Android\Sdk\build-tools\30.0.2"
Criando um projeto
Caso queira criar com outra versão react-native init primeiroProjeto --version=0.58 ex
Entendendo o React e React Native

,
Criando Classes ou Funções
Estilização com StyleSheet
});
Criando classes
Estilização com StyledComponents
Utilização de Props:


Props e States
UseState

Pode ser também ser criada uma arrow function
onChangeText={t=>setName(t)}
Mudando State com Botões
Condicional de Exibição

Ou ainda pode ser feito:

UseEffect
A ideia é de ser como uma trigger.
Lidando com Teclado e Platform

APIs do próprio React Native
let {widjt:largura, height:altura} = Dimensions.get('window');
import {alert} from 'react-native';

Separando em Componentes
Utilizando imports de objetos feitos pro você para reutilizar código.
Imagens
import {Image} from 'react-native';
Swipe para Deletar (1/2)
AsyncStorage
Possibilidade de armazenar dados no Celular.
npm install @react-native-community/async-storage --save
Modal
StatusBar
import {StatusBar} from 'react-native';
Tipos de requisições a API

Testando uma API
Requisição Then / Async-await
Projeto: Filmes em cartaz (1/2)
Requisições POST
Sistemas de Login

RNav5: Introdução e Instalação
3 tipos diferentes de telas
StackNavigator - Pode ir navegando entre as telas
Tab- Tem Tab já diz do que se trata.
DrawerNavigator - Como se fosse um menu
npm install react-native-screens react-native-safe-area-context
RNav5: Organização das Telas e Navegação de Telas
Pode ser usado via Props ou Hooks para realizar a navegação.
import {userNavigation} from '@react-navigation/native';
const navigation = userNavigation();
RNav5: Passando Parâmetros entre telas.
Envio por userNavigation;
navigation.navigate('NomeTela',{name:name});
Como receber?
Via Hook
import {userNavigation,userRoute.} from '@react-navigation/native';
const route = userRoute();
const name = route.params.name;
caso não for enviado o valor então deverá ser tratado.
const name = route.params?.name; ou
const name = route.params?.name ?? 'Visitante';
RNav5: Personalizando o Header 1
Pode ser feito o StackNavigator

Para alterações de layout é melhor utilizar o userLayoutEffect.
RNav5: Inserindo Elementos no Header 1

RNav5: TabNavigator
Personalizando as tabs;
Contexto:
Stack Navigator
O Stack Navigation, apesar de simples, já implementa um header e um botão de voltar nas rotas.
É ideal pra quando você quer uma implementação mais simples, ou não tem muito tempo para investir no layout.
É muito comum esse tipo de navigator ser utilizado em conjunto com algum outro navigator.
A implementação desse navigator é bem parecida com a do SwitchNavigator.
import { createStackNavigator, createAppContainer } from 'react-navigation';
import Login from '../pages/Login';
import Dashboard from '../pages/Dashboard';
const mainNavigation = createStackNavigator({
Login,
Dashboard,
});
export default createAppContainer(mainNavigation);

DrawerNavigator
Esse tipo navegação é bem conhecido e querido por muitos devs.
Esse navigator adiciona uma sidebar na lateral do aplicativo, o que é excelente pra quando você tem um grande número de rotas visíveis ao usuário.

A implementação desse navigator é bem semelhante aos anteriores.
Para esse exemplo, utilizamos a biblioteca react-native-vector-icons.
import React from 'react';
import { createDrawerNavigator, createAppContainer } from 'react-navigation';
import Icon from 'react-native-vector-icons/FontAwesome';
Icon.loadFont();
import Login from '../pages/Login';
import Dashboard from '../pages/Dashboard';
const mainNavigation = createDrawerNavigator({
Login: {
screen: Login,
navigationOptions: () => ({
drawerIcon: <Icon name="lock" size={20} color="#7159c1" />,
}),
},
Dashboard: {
screen: Dashboard,
navigationOptions: () => ({
drawerIcon: <Icon name="rocket" size={20} color="#7159c1" />,
}),
},
});
export default createAppContainer(mainNavigation);
https://blog.rocketseat.com.br/navegacao-react-native/