Para iniciar um novo projeto com o React Native CLI, vamos utilizar o comando npx react-native init myapp
.
Podemos adicionar flags para especificar a linguagem, ex.:
npx react-native init myapp --template react-native-template-typescript
.
Agora, para executar uma aplicação React Native CLI, basta seguirmos os seguintes passos:
- Acessar a pasta do projeto pelo terminal;
- Executar o comando
npm start
; - Executar o comando
npm run android
.
-
Depois de baixarmos as fontes desejadas, vamos criar um diretório de fontes em assets. O caminho deve ser assim:
PROJECT-DIRECTORY/src/assets/fonts
. -
Se ainda não tiver sido criado, devemos criar um arquivo de configuração na raiz do projeto chamado
react-native.config.js
. Vamos adicionar o seguinte código dentro:
module.exports = {
project: {
ios: {},
android: {}
},
assets: ['./src/assets/fonts/'],
};
- Após a conclusão das etapas acima, podemos simplesmente executar um comando para vincular as fontes que acabamos de adicionar:
> npx react-native-asset
Podemos verificar se realmente foram atualizadas no iOS abrindo o
ios/nome_projeto/Info.plist
no editor de texto e procurar pela key “ UIAppFonts”;
No Android procurando pela pasta
android/app/src/main/assets/fonts
e verificando se os arquivos estão lá.
Essa estratégia facilita bastante a importação dos arquivos no código ao trabalharmos com o @
em vez de vários ../
.
- Vamos usar a biblioteca
Babel plugin
, para instalar esse plugin iremos rodar o comando seguinte:
> npm install --save-dev babel-plugin-module-resolver
Em seguida, vamos realizar as configurações necessárias.
- babel.config.js:
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
plugins: [
[
'module-resolver',
{
root: ['./src'],
alias: {
'@dtos': './src/dtos',
'@assets': './src/assets',
'@components': './src/components',
'@screens': './src/screens',
'@storage': './src/storage',
'@utils': './src/utils',
'@services': './src/services',
'@hooks': './src/hooks',
'@contexts': './src/contexts',
'@routes': './src/routes'
}
}
]
]
};
- tsconfig.json:
{
"extends": "@tsconfig/react-native/tsconfig.json",
"compilerOptions": {
"strict": true,
"baseUrl": "./",
"paths": {
"@dtos/*": [
"src/dtos/*"
],
"@assets/*": [
"./src/assets/*"
],
"@components/*": [
"./src/components/*"
],
"@screens/*": [
"./src/screens/*"
],
"@storage/*": [
"./src/storage/*"
],
"@utils/*": [
"./src/utils/*"
],
"@services/*": [
"./src/services/*"
],
"@hooks/*": [
"./src/hooks/*"
],
"@contexts/*": [
"./src/contexts/*"
],
"@routes/*": [
"./src/routes/*"
]
}
}
}
Criar um novo projeto usando React Native CLI com TypeScript e modelo Native Base:
> npx react-native init MyApp --template @native-base/react-native-template-typescript
1- Instalar o Native Base:
> npm install native-base react-native-svg@12.1.1 react-native-safe-area-context@3.3.2
2- Rodar a instalação do pod:
> cd ios/
> pod install
- Colocar o código abaixo no App.tsx:
import React from "react";
import { NativeBaseProvider, Box } from "native-base";
export default function App() {
return (
<NativeBaseProvider>
<Box>Hello world</Box>
</NativeBaseProvider>
);
}
-
Stack Navigator Uma das estratégias mais utilizadas; Navegação em pilha.
-
Tab Navigator Menu na parte de baixo da tela.
-
Drawer Navigator Barra lateral esquerda oculta.
- Vamos instalar pacote React Navagation seguindo a documentação, primeiramente iremos rodar o comando seguinte:
> npm install @react-navigation/native
- Em seguida para instalar as dependências vamos executar o comando seguinte:
> npm install react-native-screens react-native-safe-area-context
A partir do React Native 0.60 e superior, a vinculação é automática . Então não precisamos rodar o react-native link
.
- Se estivermos em um Mac e desenvolvendo para iOS, precisaremos instalar os pods (via Cocoapods) para concluir a vinculação:
> npx pod-install ios
O pacote react-native-screens
requer uma etapa de configuração adicional para funcionar corretamente em dispositivos Android. Editaremos o arquivo MainActivity.java
que está localizado em android/app/src/main/java
.
Vamos adicionar o código destacado ao corpo da classe MainActivity
:
public class MainActivity extends ReactActivity {
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(null);
}
// ...
}
Nos certificando de adicionar a seguinte instrução de importação no topo deste arquivo, abaixo da instrução do pacote:
import android.os.Bundle;
- Agora, iremos instalar o pacote Native Stack Navigator em si, rodando o comando seguinte:
npm install @react-navigation/native-stack
- Primeiramente, dentro de
src
vamos criar o arquivoroutes/auth.routes.tsx
(rota de autenticação) e adicionar as configurações de rotas dentro dele:
import { createNativeStackNavigator } from "@react-navigation/native-stack";
import { SignIn } from "@screens/SignIn";
import { SignUp } from "@screens/SignUp";
const { Navigator, Screen } = createNativeStackNavigator();
export const AuthRoutes = () => {
return (
<Navigator>
<Screen
name="signIn"
component={SignIn}
/>
<Screen
name="signUp"
component={SignUp}
/>
</Navigator>
);
};
- Em seguida, vamos criar um arquivo index (
rountes/index.tsx
) com o contexto das rotas:
import { NavigationContainer } from "@react-navigation/native";
import { AuthRoutes } from "./auth.routes";
export const Routes = () => {
return (
<NavigationContainer>
<AuthRoutes />
</NavigationContainer>
);
}
- Feito isso, podemos importar o componente
Routes
no componente principal (App.tsx
):
import { StatusBar } from "react-native";
import { NativeBaseProvider } from "native-base";
import { THEME } from "./src/theme";
import { Routes } from "@routes/index";
const App = () => {
return (
<NativeBaseProvider theme={THEME}>
<StatusBar
barStyle={"light-content"}
backgroundColor="transparent"
translucent
/>
<Routes />
</NativeBaseProvider>
);
};
export default App;
- É quando passamos uma props, de um pai, para um filho, o filho passa para o filho dele e assim por diante.
- Resolvendo:
- Async Storege é um sistema de armazenamento de chave-valor, assíncrono e persistente.
- Armazenando um objeto no Async Storege - convertendo tudo para string:
- Recuperando os dados - convertendo a string de volta para objeto:
- Para instalar o Async Storage em um projeto React Native CLI, vamos rodar o comando seguinte:
> npm install @react-native-async-storage/async-storage