Renê Soares programação e aleatóriedades

Uma análise comparativa: React Navigation, React Native Navigation (Wix) e React Native Router Flux

Fala pessoal, tudo bem?

Hoje venho falar com vocês sobre as libs de navegação com react native. Dito isso, vamos aproveitar todo poder do JavaScript e do React, o React Native capacita os desenvolvedores a criar aplicativos verdadeiramente nativos usando uma linguagem familiar e versátil, aproveitando a abordagem “aprender uma vez, escrever em qualquer lugar”.

A beleza do React Native reside em sua capacidade de preencher as lacunas entre os componentes nativos e o código JavaScript.

Além de seus benefícios de eficiência e desempenho, o React Native oferece um ecossistema de componentes, bibliotecas e ferramentas de desenvolvedor pré-construídos.

Para desenvolvedores React Native, escolher a biblioteca de navegação correta é vital para criar experiências de usuário intuitivas e contínuas.

O gerenciamento da apresentação e da transição entre várias telas normalmente é feito pelo que é conhecido como navegador.

React Navigation

React Navigation é uma biblioteca de navegação amplamente utilizada e altamente flexível para React Native.

Ele oferece uma abordagem baseada em JavaScript e oferece suporte à navegação baseada em pilha e em guias e navegação em gaveta.

Ele fornece uma API declarativa e navegadores personalizáveis, além de permitir links diretos para lidar com URLs.

Vamos explorar como usar o React Navigation com alguns trechos de código:

Instalação: Primeiro, instale os pacotes necessários

yarn add @react-navigation/native react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context @react-native-community/masked-view

Configure o contêiner de navegação: envolva seu componente raiz com o NavigationContainercomponente para fornecer funcionalidade de navegação a sua aplicação.

import { NavigationContainer } from '@react-navigation/native';

function App() {
  return (
    <NavigationContainer>
    </NavigationContainer>
  );
}

Exemplo de navegação em Stack: vamos criar uma navegação simples usando React Navigation. Neste exemplo, temos duas telas: HomeScreen e DetailsScreen.

import { createStackNavigator } from '@react-navigation/stack';

const Stack = createStackNavigator();

function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="Details" component={DetailsScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

Exemplo de navegação em Tab: se quiser usar a navegação baseada em tabs, você pode usar createBottomTabNavigator ou createMaterialBottomTabNavigator do React Navigation. Aqui está um exemplo usando createBottomTabNavigator2.

import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';

const Tab = createBottomTabNavigator();

function App() {
  return (
    <NavigationContainer>
      <Tab.Navigator>
        <Tab.Screen name="Home" component={HomeScreen} />
        <Tab.Screen name="Settings" component={SettingsScreen} />
      </Tab.Navigator>
    </NavigationContainer>
  );
}

Lembre-se de importar os componentes necessários do React Navigation e agrupar seu componente principal com o NavigationContainer para ativar a funcionalidade de navegação.

Em seguida, defina o navegador utilizando a função de navegador apropriada (createStackNavigator, createBottomTabNavigator, etc.) e configure as telas.

Documentação do React Navigation aqui.

React Native Navigation (Wix)

React Native Navigation, desenvolvida pelo Wix, é uma biblioteca de navegação de alto desempenho que oferece experiências de navegação nativas nas plataformas iOS e Android.

Ele utiliza controladores de navegação nativos e fornece transições e gestos suaves, resultando em uma experiência de usuário altamente responsiva e envolvente.

Vamos explorar como usar o React Native Navigation (Wix) com uma breve explicação e trechos de código:

Instalação: Primeiro, instale o pacote:

yarn add react-native-navigation

Definição do componente de navegação: no componente de entrada do seu aplicativo (por exemplo, index.tsx), registre as telas do seu aplicativo e defina o componente de navegação usando a API do React Native Navigation

import { Navigation } from 'react-native-navigation';
import HomeScreen from './screens/HomeScreen';
import ProfileScreen from './screens/ProfileScreen';

Navigation.registerComponent('HomeScreen', () => HomeScreen);
Navigation.registerComponent('ProfileScreen', () => ProfileScreen);

Navigation.setRoot({
  root: {
    component: {
      name: 'HomeScreen',
    },
  },
});

Navegando entre telas: para navegar entre as telas, use o método push fornecido pela biblioteca.

import { Navigation } from 'react-native-navigation';

function navigateToProfileScreen() {
  Navigation.push('HomeScreen', {
    component: {
      name: 'ProfileScreen',
      passProps: {
        userId: 123,
      },
      options: {
        topBar: {
          title: {
            text: 'Profile',
          },
        },
      },
    },
  });
}

No exemplo acima, navegamos de ‘HomeScreen’ para ‘ProfileScreen’ usando o método Navigation.push. Passando parâmetros adicionais (por exemplo, userId) para a tela de destino e configuramos as opções da barra superior, como definir um título personalizado.

Personalizando opções de navegação: Há lib oferece várias opções para personalizar a navegação, incluindo estilizar a barra de navegação, manipular botões de voltar e controlar animações. Aqui está um exemplo de configuração da barra de navegação.

import { Navigation } from 'react-native-navigation';

Navigation.setDefaultOptions({
  topBar: {
    title: {
      color: 'white',
    },
    background: {
      color: '#333',
    },
  },
});

Ela oferece uma ampla variedade de padrões de navegação, incluindo navegação em stack, navegação em tab, navegação com menu lateral e muito mais.

Você pode explorar esses padrões e opções de configuração adicionais na documentação oficial.

React Native Router Flux:

React Native Router Flux é uma biblioteca de navegação para React Native inspirada em React Router.

React Native Router Flux usa uma abordagem centralizada onde você define cenas e navega entre elas usando ações.

React Native Router Flux oferece suporte a vários tipos de navegação, incluindo navegação por guias, navegação modal e navegação por stack.

Aqui está uma breve explicação do React Native Router Flux junto com um trecho de código para ilustrar seu uso:

Instalação: Para usar o React Native Router Flux, instale o pacote.

yarn add react-native-router-flux

Importando componentes necessários: importe os componentes necessários.

import { Router, Scene } from 'react-native-router-flux';

Configurando roteador e cenas: Defina seu roteador e cenas usando os componentes Router e Scene. Cada cena representa uma tela no seu aplicativo.

function App() {
  return (
    <Router>
      <Scene key="root">
        <Scene key="home" component={HomeScreen} initial />
        <Scene key="details" component={DetailsScreen} />
      </Scene>
    </Router>
  );
}

Neste exemplo temos duas cenas: “home” e “details”. A cena “home” é definida como cena inicial usando o parâmetro initial.

Navegando: para navegar, use o “Actions” fornecido pela lib. Você pode acionar ações de navegação de forma programática ou usando componentes de UI, como botões.

import { Actions } from 'react-native-router-flux';

function HomeScreen() {
  return (
    <View>
      <Text>Bem vindo a Home!</Text>
      <Button title="Go to Details" onPress={() => Actions.details()} />
    </View>
  );
}

Neste exemplo, pressionar o botão navegará para a cena “details” usando a função Actions.details().

React Native Router Flux fornece recursos adicionais, como passagem de parâmetros entre cenas, manipulação de cenas aninhadas e personalização de estilos de barra de navegação.

É importante ressaltar que a lib é indicada para aplicações de pequeno e médio porte com requisitos de navegação menos complexos.

No entanto, observe que o React Native Router Flux não é mais mantido ativamente e foi sucedido por outras bibliotecas de navegação como o React Navigation, que oferece recursos mais extensos e atualizações contínuas.

Leia a documentação do React Native Router Flux para obter instruções de uso detalhadas e explore recursos mais avançados para aprimorar o fluxo de navegação do seu aplicativo React Native.

Conclusão

Escolher a biblioteca de navegação é uma das principais decisões que nós como desenvolvedores temos que tomar, pois através dela, a experiência dos usuários fica mais fluida e intuitiva. Expero que essa pequena análise ajude a quem ler esse artigo escolher a lib mais adequada para seu projeto.

comments powered by Disqus