Criando um componente com detecção de gestos no React Native

Ben Hur
4 min readJan 24, 2021

--

Olá Dev, esse é meu primeiro tutorial e pretendo ensinar de forma fácil como criar um componente no seu app que detecta em qual direção o dedo se moveu (Swipe Gesture). Para seguir esse tutorial recomendo alguns conhecimentos básicos de programação e do react native em si.

Criando o app

Vamos criar um app utilizando o comando abaixo no terminal:

react-native init swipeGesture && cd swipeGesture

Execute o app pela primeira vez a depender da plataforma que você está utilizando:

Android:

react-native run-android

iOS:

react-native run-ios

Inicialmente o app deverá executar com essa aparência (versão 0.63.4):

Crie uma pasta chamada “src” na raiz do seu projeto, e dentro dela vamos criar uma pasta chamada “Screens”, dentro da Screens crie uma pasta chamada “Home”, essa será a tela principal do nosso app.

Vamos criar um arquivo dentro na nossa pasta Home, bem simples inicialmente, com o seguinte conteúdo:

E na raiz do nosso projeto, no arquivo App.js, vamos alterar o conteúdo dele:

Agora na nossa tela do app já deve mostrar centralizada a palavra HOME.

Vamos criar um quadrado no meio dessa tela, onde será posicionado nosso grid. Comece importando o componente Dimensions do próprio react native que nos dará dinamicamente o tamanho do nosso quadrado, e crie a constante gridDimension:

No nosso styles vamos criar um estilo inicial pra esse grid:

E dentro da View principal criamos nosso grid:

Capturando o movimento

Para saber em qual direção o dedo deslizou dentro do grid usaremos uma lib chamada react-native-swipe-gestures, você pode encontra-la nesse link.

Instale a lib com o comando abaixo no terminal:

npm install react-native-swipe-gestures --save

Importe a biblioteca:

Vamos criar um método inicial que dará para qual direção o dedo deslizou, para isso também vamos utilizar hooks, primeiro vamos criar as variáveis de estado e importar as constantes de direção do gesto capturado:

A biblioteca não funciona perfeitamente no iOS, então segui a orientação abaixo como solução de contorno, o que podemos usar como padrão, nela vamos criar 3 funções, a primeira para dizer se o dedo deslizou pra cima ou pra baixo, a segunda pra direita ou pra esquerda e a principal que dirá em qual eixo o deslize foi predominante:

Agora o método chave que definirá em qual direção vamos atuar no processamento do grid:

E o componente que vamos substituir a View que tínhamos criado inicialmente:

Nesse ponto o nosso aplicativo deve dizer pra qual lado o dedo deslizou dentro do grid.

Espero que esse tutorial possa ser útil pra você, críticas e sugestões são bem vindas.

--

--

Ben Hur
Ben Hur

Written by Ben Hur

I am a React Native Developer with passion to build things.

No responses yet