[Duvida] React Native
Olá a todos,
Eu estou começando no React Native e possuo algumas duvidas, sobre stacks ou libs para acompanhar este lindo framework.
Não sei se a melhor forma de criar uma UI, seria utilizando o proprio StyleSheet ou Styled Components, ou alguma outra lib de components UI (se houver alguma, recomendar) Criar components com base no shadcn/ui é uma ideia interessante?
Axios ou fetch ? Acredito que esta duvida está me perseguindo a alguns tempos
Expo-router ou React router(com React Navigation) ? Se for expo-router qual a melhor estrutura a se montar com Expo-Router ?
A melhor forma de fazer uma request é realmente utilizando ela dentro de um useEffect ? Ou talvez partir para um react-query ?
Dados que devem ser utilizados offline, Redux ? LocalStorage ou database local ?
Qual é a melhor estrutura, Pattern para se utilizar em uma aplicação RN ?
Essas são algumas duvidas que eu possuo sempre que vou iniciar um projeto, claro que muitas delas variam conforme o projeto.
Ficaria grato se alguem pudesse contribuir com algum estudo, sobre patterns que utilizem alguma desssas libs informadas, ou um caminho para estruturar de forma clean o projeto.
-
Estilos e UI:
- O
StyleSheet
padrão do React Native é uma escolha sólida para estilos simples e performance, mas você também pode considerar bibliotecas comoStyled Components
oustyled-system
se preferir abordagens mais próximas do CSS. - Para componentes UI, o
shadcn/ui
é uma opção, mas existem muitas outras bibliotecas populares, comoReact Native Elements
,UI Kitten
,NativeBase
, ePaper
(Material Design).
- O
-
Requisições HTTP:
- Ambos Axios e
fetch
são boas escolhas. O Axios é mais fácil de usar, tem uma API mais simples e suporta facilmente a criação de instâncias globais com configurações personalizadas. Ofetch
é uma API nativa do navegador, portanto, não é necessário importar bibliotecas adicionais.
- Ambos Axios e
-
Navegação:
- O
React Navigation
é uma escolha popular para a navegação em React Native. No entanto, se você estiver usando o Expo, pode considerar oExpo-Router
, que é uma alternativa simplificada. A escolha entre eles depende das necessidades específicas do seu aplicativo.
- O
-
Requisições HTTP e Estado Global:
- O uso de
useEffect
para requisições HTTP é uma abordagem comum e adequada. Quanto ao estado global, você pode considerarReact Context API
,Redux
, ou até mesmoMobx
para gerenciar o estado global da sua aplicação. A escolha depende da complexidade do seu aplicativo e das preferências da equipe.
- O uso de
-
Dados Offline:
- Para dados que precisam ser usados offline, você pode considerar o
AsyncStorage
(uma API para armazenamento de chave-valor), bancos de dados locais como oSQLite
, ou uma biblioteca de gerenciamento de estado que suporta armazenamento offline, como oRedux Persist
.
- Para dados que precisam ser usados offline, você pode considerar o
-
Estrutura e Padrões:
- Ao desenvolver um projeto React Native, é uma boa prática seguir padrões como a arquitetura Flux ou Redux para gerenciamento de estado, dividir seu código em componentes reutilizáveis, seguir o princípio DRY (Don't Repeat Yourself) e manter a organização do projeto em mente para facilitar a manutenção.