Como visualizar detalhes do usuario com React Native


Neste tutorial, serĆ” apresentado como criar a tela para visualizar detalhes do usuĆ”rio com React Native. 

Primeiramente, serĆ” abordado como recuperar as informaƧƵes do usuĆ”rio na API. 

Em seguida, serĆ” explicado como criar o CSS para apresentar os dados no aplicativo. 

Por fim, serƔ demonstrado como apresentar na tela as informaƧƵes do usuƔrio com React Native.

Download do cĆ³digo fonte desenvolvido na aula: Download

Curso React Native e Node.js: Mais Detalhes do Curso

Playlist completa sobre Laravel: Acessar

Receber as aulas gratuitas do curso React Native e Node.js: Acessar


Para comeƧar, Ć© utilizado como base o projeto da aula "Como enviar parĆ¢metro entre telas do aplicativo com React Native".

No arquivo "src/pages/ViewUser/index.js", ou seja, na tela de visualizaĆ§Ć£o, acrescentado o useEffect.

// useEffect - Criar efeitos colaterais em componentes funcionais
// useState - Adicionar estado ao componente
import { useEffect, useState } from "react";

Para chamar a funĆ§Ć£o de recuperar usuĆ”rios ao acessar a tela de visualizaĆ§Ć£o.

// Executar quando o usuĆ”rio carregar a tela e chamar a funĆ§Ć£o getUser
useEffect(() => {
  getUser();
}, []);

Criada a funĆ§Ć£o getUser, que recebe o parĆ¢metro userId enviado entre as telas. 

// FunĆ§Ć£o para recuperar os detalhes do usuĆ”rio
const getUser = async () => {

  // Receber como parĆ¢metro o id registro
  const userId = route.params.userId;
  
}

Incluƭdo o arquivo que contƩm as credenciais da API.

// Arquivo com as configuraƧƵes da API
import api from "../../config/api";

Dentro do mĆ©todo "getUser", realizada a solicitaĆ§Ć£o para a API e verificado o status que a API retornou.

// FunĆ§Ć£o para recuperar os detalhes do usuĆ”rio
const getUser = async () => {

  // Receber como parĆ¢metro o id registro
  const userId = route.params.userId;

  // RequisiĆ§Ć£o para a API indicando a rota
  await api.get(`/users/${userId}`)
    .then((response) => { // Acessar o then quando a API retornar status sucesso

    }).catch((err) => { // Acessar o catch quando a API retornar status erro
      
    });
}

Se a API retornar um erro, ou seja, status 400, o cĆ³digo acessa o bloco .catch, apresenta o alerta com a mensagem de erro e faz o redirecionamento para a tela de listagem.

// FunĆ§Ć£o para recuperar os detalhes do usuĆ”rio
const getUser = async () => {

  // Receber como parĆ¢metro o id registro
  const userId = route.params.userId;

  // RequisiĆ§Ć£o para a API indicando a rota
  await api.get(`/users/${userId}`)
    .then((response) => { // Acessar o then quando a API retornar status sucesso

    }).catch((err) => { // Acessar o catch quando a API retornar status erro
      if (err.response) {  // Acessa o IF quando a API retornar erro

        Alert.alert("Ops", err.response.data.mensagem);

        // Redirecionar o usuƔrio para tela listar usuƔrios 
        navigation.navigate('ListUsers');

      } else { // Acessa o ELSE quando a API nĆ£o responder

        Alert.alert("Ops", "Erro: Tente novamente!");

        // Redirecionar o usuƔrio para tela listar usuƔrios 
        navigation.navigate('ListUsers');
      }
    });
}

Se a API retornar sucesso, ou seja, status 200, o cĆ³digo acessa o bloco .then e atribui as informaƧƵes do usuĆ”rio em "user", utilizando o mĆ©todo "setUser".

// FunĆ§Ć£o para recuperar os detalhes do usuĆ”rio
const getUser = async () => {

  // Receber como parĆ¢metro o id registro
  const userId = route.params.userId;

  // RequisiĆ§Ć£o para a API indicando a rota
  await api.get(`/users/${userId}`)
    .then((response) => { // Acessar o then quando a API retornar status sucesso

      // Setar os dados do usuƔrio retornado da API
      setUser(response.data.user);

    }).catch((err) => { // Acessar o catch quando a API retornar status erro
      if (err.response) {  // Acessa o IF quando a API retornar erro

        Alert.alert("Ops", err.response.data.mensagem);

        // Redirecionar o usuƔrio para tela listar usuƔrios 
        navigation.navigate('ListUsers');

      } else { // Acessa o ELSE quando a API nĆ£o responder

        Alert.alert("Ops", "Erro: Tente novamente!");

        // Redirecionar o usuƔrio para tela listar usuƔrios 
        navigation.navigate('ListUsers');
      }
    });
}

Na implementaĆ§Ć£o acima, as informaƧƵes do usuĆ”rio sĆ£o atribuĆ­das em "user", sendo necessĆ”rio criĆ”-lo utilizando o useState.

// Armazenar as informaƧƵes do usuƔrio
const [user, setUser] = useState([]);

Com as informaƧƵes do usuƔrio recuperadas, serƔ impresso o valor. Primeiramente, porƩm, Ʃ criado o CSS no arquivo "src/styles/custom_adm.js".

export const Content = styled.View`
    flex-direction: row;
    border-bottom-color: #c0c0c0;
    border-bottom-width: 1px;
`;

export const TitleViewContent = styled.Text`
    padding-top: 15px;
    color: #c0c0c0;
    font-size: 18px;
`;

export const ViewContent = styled.Text`
    padding-bottom: 15px;
    color: #f5f5f5;
    font-size: 18px;
    padding-top: 15px;
`;

Para finalizar, as informaƧƵes do usuĆ”rio serĆ£o impressas na tela.

return (
  <ScrollView contentContainerStyle={{ flexGrow: 1 }}>
    <Container>
      <TitleList>Detalhes do UsuƔrio</TitleList>

      <Content>
        <TitleViewContent>ID: </TitleViewContent>
        <ViewContent>{user.id}</ViewContent>
      </Content>

      <Content>
        <TitleViewContent>Nome: </TitleViewContent>
        <ViewContent>{user.name}</ViewContent>
      </Content>

      <Content>
        <TitleViewContent>E-mail: </TitleViewContent>
        <ViewContent>{user.email}</ViewContent>
      </Content>

    </Container>
  </ScrollView>
);

Baixar o cĆ³digo-fonte completo do projeto.

Bom, era isso. Espero que o tutorial tenha sido Ćŗtil!