Um momento
Aula 23
Cursos / Pesquisa de Imagens com o React Native
Resumo do Curso Pesquisa de Imagens (App móvel c/ React Native)

Summary

Resumo do Tutorial

Neste tutorial, a aplicação desenvolvida permite a busca de imagens utilizando a API da Microsoft. Apesar de alguns desafios, como a utilização de URLs de conteúdo, que não foi possível, a solução encontrada foi utilizar o thumbnail URL para exibir as imagens em uma segunda cena.

Ajustes e Estilo

  • Ajustes de Estilo:

    • Modificações foram feitas no estilo do container da cena inicial (home) para corrigir margens e espaços.
    • Foi sugerido adicionar padding no topo para evitar sobreposição com a status bar do dispositivo.
  • Refatorações:

    • Foi proposto um processo de destruturação (destructuring) das propriedades de estilo para facilitar a legibilidade do código, evitando a repetição da palavra styles.

Componentes Utilizados

A aplicação foi dividida em múltiplos componentes:

  • Home: Tela inicial com a caixa de busca e lista de imagens.
  • Image Detail: Tela que exibe detalhes da imagem selecionada.

Funcionamento da Busca

  • O componente de busca comunica-se com a API da Microsoft, enviando uma requisição quando o usuário clica no botão de busca.
  • A resposta da API é utilizada para atualizar o estado da aplicação com as imagens retornadas.

Navegação

A navegação entre componentes foi gerida utilizando um Navigator, que lida com as rotas dentro da aplicação:

  • A primeira tela exibida é a "home".
  • Clicando em um item da lista, o usuário é levado à tela de detalhes da imagem, onde pode voltar à tela inicial.

Considerações Finais

  • O tutorial abrangeu conceitos importantes de React Native, como a distinção entre componentes funcionais e de classe.
  • Foi prontamente abordado o problema com URLs de imagens, optando pelo uso do thumbnail em vez do content URL.
  • O tutorial foi concluído com sugestões para aprimoramento e estilização da aplicação.

Se você completou o tutorial, parabéns! Para mais informações e para interagir, você é convidado a se inscrever e deixar comentários ou perguntas.

Contatos

Obrigado e até a próxima!

Video Transcript

Então, nós chegamos no final do nosso tutorial e a gente fez uma aplicativa para fazer uma busca de imagens usando o API do Microsoft. Tivemos um desafio pela frente, especialmente pelo content URL. A gente que não conseguiu usar e acabou usando thumbnail URL também para a imagem de tamanho largo na outra cena. E eu gostaria de fazer nesse vídeo é só ajeitar um pouco os chilos aqui, só um pouquinho, mas eu não vou deixar muito... Vou deixar o resto do trabalho para o estilo para você, para você fazer um estilo do jeito que você quiser, quiser embelezar o aplicativo, sinta-se livre a fazer. Então, o que gostaria de fazer rapidinho é só ajeitar esse negócio aqui. Se você ver aqui o acor desse background aqui, um asusinho, não sei se dá para ver no vídeo, mas aqui tem um branco aqui que vem do componente do navegador e que a gente tinha posto uma margem nesse container que tem essa cena. Na verdade, deveria ser um pad, né? Se a gente quisesse do lado e do outro. Sim, em baixo. Para ter um espaçozinho. Então, vamos ajeitar isso. Eu vou aqui abrir o meu arquivo. Você não sabe que no índice aqui, o index, tem o navegador. Tá bom? Esse navegador, a cena inicial é o home. E vai dar esse cara. O home é um componente que a gente definiu na pasta components. Aqui, vamos abrir o home. E deixa eu só... Vamos ver o estilo aqui que está no container para esse cara todo aqui. Na render function, na função render da cena home, a gente retorna ao vídeo que tem esse estilo styles container. O que a gente vai fazer? A gente vai ver aqui o estilo do container. Você nota que tem um asusinho e tem uma margem, mas na verdade eu queria botar um pad. Só para consertar isso. Agora está tudo o asusinho. E não tem mais aquele espaço que era branco, né? Outra coisa que seria legal é consertar esse negócio aqui. Quando dá uma busca, fica parecendo aqui em cima da status bar, no carrier, o horário e a bateria. O jeito de fazer isso, a gente poderia dar uma... Talvez aqui pode um parem. Do jeito que está agora, já tem um parem de 10, que já dá um pouco para... Já deixa o negócio do facinho lá, mas... Uma maneira, você pode botar outro parem em topo, botar 15, vamos ver se acontece. E agora está um pouco mais abaixo da status bar e está melhor ainda. Não acho que esse pad em 10 vai adicionar em todos os lados, mas eu faço o caso especial, vou perder em topo. Botar 20 agora. Dá uma busca, vê o que acontece. Agora está melhor, né? Tá bom, só isso. Tem outra maneira de ajustar o estilo, se você se livre a... ajeitar da sua maneira. Quando clico em 1, tudo ok. Volta. Tudo bem. Então, outra coisa que eu queria fazer rapidinho é sugerir uma refactoring aqui. Vamos lá no imedit detail, que a gente estava usando antes, que quando a gente clica, essa é a cena, chamada imedit detail. Vamos aqui. O que eu queria sugerir é... você nota que a gente está usando styles.com.co, styles.titles, styles.image, e se tiver muito dele, tem que digitar todo tempo styles. Uma maneira de não ter que digitar mais isso é fazer um destruction do mesmo jeito, da maneira que a gente fez nesse caso aqui. Então, a gente podia fazer, se você não quer mais digitar styles.com.co, se tiver muito... se você tiver só um componente com o style aplicado, eu não faço refactoring. Mas se tiver mais de 2, tem muito style.style.todo, quase todo quanto, então eu não quero digitar mais, então eu faço um destruction aqui. Então, vamos fazer. Então, vou fazer assim. Vamos pegar o container, título, imagem, botão, deixe-te do botão, e que está dentro dos styles, né? Oh, desculpa. Esses caras estão dentro desse objeto styles. Então, vou fazer styles, assim. Então, dessa maneira, e eu pego styles.containers, styles.titles, styles.image, etc. Então, não tem mais que digitar esses caras. Então, vou pastar o comando D aqui, porque eu uso o Atom para selecionar esses caras todos, e vou remover. Tá bom? O que já tem aqui? Deu destructuring, destrutura, que está dentro do objeto styles, vai aparecer assim. Então, a gente não precisa mais escrever os styles.containers. É só uma maneira de dar uma refactoring para digitar menos aqui. Você digita tudo aqui, mas nem aqui, não digita mais, fica mais melhor de ver o visualizar o que está acontecendo, em vez de ter duas palavras style. Vamos só ver se está funcionando ainda, se não deu pau. Tudo bem, né? Então, você pode fazer esse refactoring nos outros coisas que você quiser. Vamos ver isso aqui. Tá bom? Note que a outra maneira, também como eu fiz esse negócio aqui, eu poderia fazer esse destruction dentro do argumento. Eu acho que a gente fez em outro aqui, vamos ver. Ou não. A gente fez no componente image list item, a gente deu destruction logo no list de argumentos. Você poderia fazer isso aqui, do mesmo jeito, pega esses caras e põe aqui. Aí não precisa mais disso. Tá bom? Mas eu vou deixar aqui, só para vocês verem. E é isso, por isso é o refactoring que eu queria fazer. Para mostrar a vocês. E a gente terminou a aplicação, está tudo bem, funcionando, tudo legal. Vou só dar um revisado aqui, no que a gente fez desde o começo. Então, ah, também essa parte aqui, esqueci, inicio route, você não precisa dar quotes. Que a gente definiu uma constante chamada home que está importada aqui. Então, não precisa fazer isso. Então, pode só por home, deixa eu salvar. Dá tudo ok. Então, nossa aplicação aqui, a gente tinha um wireframe que a gente implementou usando o reactnative com duas cenas. Primeira cena da principal, chamada home. A gente tem um título, tem a caixa de busca, e tem um botão sensível talk. E tem essa lista de itens, que cada item é uma imagem. Com a descrição, se clicar, vai para outra cena. O cena tem um título, tem a imagem maior, tamanho maior e botão de voltar. Então, a gente aprendeu a dividir a nossa aplicativa em componentes diferentes, múltiplos componentes. E temos um componente para a busca, caixa de busca e tem o componente para a lista de itens. E tem o componente, que é o item individual da sua lista. Tá bom? A gente chamou isso de Então, a gente já aprendeu a noção de componente funcional versus componente de classe. Nosso caso, a imagem list item é um componente funcional, porque não é definido usando uma função com uma variável, e não é classe. Contraste o imagem list, definido como classe, componente classe. É o componente classe mantenditado, state, enquanto o componente funcional não mantenditado. É só usado para mostrar coisas e recebemos propósitos aqui que a gente vai usar para fazer o rendering, o template. E não mantém estado. Então, quando a gente clicou em buscar aqui, botão buscar, deu um press e chamou a função onSubmit do search bar que estava definido aqui, e chamou a função que foi passada, injetada com propriedades para a search bar. OnSubmit, e a gente passa o palavra-chave que está no estado da search bar, que é linkada a essa caixa de texto. Se você notar do home, aqui, tem um search bar, a gente injeta a propriedade, onSubmit. Na verdade, a cena home é que tem a função para lidar com o search submit. Não é a caixa de texto, mas é o todo esparante. Então, quando a gente clicou em buscar, vai fazer essa query na API da Microsoft que a gente definiu aqui e faz um fetch, que é como se fosse aJAX, aJAX, e quando a gente recebeu a resposta, a gente setou o estado com os itens que veio da back-end. E está aqui, tem um endpoint, que você pega quando se cadastra na API da Microsoft, do Cognitive Services, do Bing. A gente também usou o setou-stado buscando para false, para mostrar o carregando. Porque quando vai fazer um pedido, não vai receber na mesma hora a resposta, vai demorar um pouquinho, então a gente fez um negócio carregando para ficar mais melhor para a experiência do usuário. A gente deu uns estilos, não focamos muitos nos estilos, porque a gente queria aprender mais a funcionalidade como fazer aplicação, mudar de tela, mudar de cena, e a gente usou o navegador. O navegador, se você notar, vai no index aqui, a gente adiciona o navegador. Primeira propriedade, que é o RenderSync, que a gente definiu a função que vai ser usada para lidar com as rotas. E tem o initial route, que é a rota inicial. É o objeto que vai ser o objeto inicial do route. Aí quando bate aqui no RenderSync, quando o navegador vai olhar aqui, dá um switch e determina qual é a rota que vai seguir. Nesse caso, no inicial, vai passar a rota route com id home, que foi um constante que a gente definiu o arquivo routes, e vai aqui, bate no home, retorna o componente home, e também passa o navegador com propriedades. Se não passasse, não teríamos acesso ao navegador. Aí dentro do home, quando a gente clicava no item, a gente dê um push com o navegador, e push vai adicionar esse cara aqui, a gente push um image detail, a rota do image detail, que vai ser a próxima, a gente também passou propriedades usando esse pass props, que é a gente passou as propriedades dados da imagem que a gente clica, que você vê e voltar para o index. Quando bate na rota image detail, ele retorna esse componente image detail, e tem as pass props que a gente passou, vai passar todos os valores que são passados dentro desse objeto chamado pass props, e também a gente definiu um press back, que injetou essa propriedade que tenha acesso ao pop, até acesso no navegador para dar um pop, para desempenhar e voltar para ser na terrio. Tá bom? E no finalzinho, a gente teve que lidar com o image detail, e teve um problema com a HTTPS e o content URL, que teve o redirecionamento da imagem, então a gente optou por usar o thumbnail URL para image detail, em vez do content URL. Então por... Então é isso, essa aplicação aplicativa, se você chegou até aqui, nos parabéns você completou esse tutorial, que tem muitas coisas essenciais que é importante aprender, e se você gostou gostou a você se inscreva, também estou na redes sociais meu twitter nbkhope e o gethub, o mesmo nome nbk h-o-p-e Obrigado, deixa comentários, sugestões, perguntas, sempre bem vindos e se tiver também pedidos para ver, por favor Valeu então, tchau
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: