{"id":3009,"date":"2020-03-09T22:57:25","date_gmt":"2020-03-10T01:57:25","guid":{"rendered":"https:\/\/www.itexto.com.br\/devkico\/?p=3009"},"modified":"2020-03-09T22:57:30","modified_gmt":"2020-03-10T01:57:30","slug":"explorando-o-react-native","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=3009","title":{"rendered":"Explorando o React Native"},"content":{"rendered":"\n<p>React Native \u00e9 uma das tecnologias que mais me empolgaram nos \u00faltimos tempos. Neste post conto pra voc\u00eas minha experi\u00eancia de aprendizado, o que gostei e tamb\u00e9m o que n\u00e3o gostei tanto.<\/p>\n\n\n\n<p>Tamb\u00e9m aproveito pra lhes mostrar nosso novo projeto: o &#8220;\/dev\/All Mobile&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Como cheguei no React Native<\/h2>\n\n\n\n<p>Era quest\u00e3o de tempo: se voc\u00ea ouviu<a href=\"https:\/\/itexto.com.br\/podcast\/index.php\/2020\/01\/27\/5-o-radar-da-itexto-o-que-usamos-em-2019-e-o-que-estamos-mirando-para-2020\/\" class=\"rank-math-link\"> o \u00faltimo podcast da itexto<\/a>, React era uma das tecnologias que j\u00e1 estavam em nosso radar por um tempo. O interessante \u00e9 que quem estava no radar de fato era o React, n\u00e3o o React Native. Sendo assim come\u00e7o pelo primeiro.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Come\u00e7ou pelo React<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/a\/a7\/React-icon.svg\/1200px-React-icon.svg.png\" alt=\"Resultado de imagem para react logo\" width=\"289\" height=\"203\"\/><\/figure><\/div>\n\n\n\n<p>Na <a href=\"https:\/\/www.itexto.com.br\" class=\"rank-math-link\">itexto<\/a> quando o assunto \u00e9 front-end somos uma equipe bastante ecl\u00e9tica: sempre aparece um framework que n\u00e3o conhecemos vindo de um sistema legado que precisamos evoluir, o que implica em aprender como este opera, dominar suas entranhas e inclu\u00ed-lo em nosso cinto de utilidades. <\/p>\n\n\n\n<p>Curiosamente React nunca havia aparecido, mas os clientes sempre comentavam a respeito. E dado que no mercado h\u00e1 hoje essencialmente tr\u00eas frameworks front-end (Angular, Vue.js e React), faltava esta pe\u00e7a em nossa caixa de ferramentas.<\/p>\n\n\n\n<p>Iniciamos ent\u00e3o nossa pesquisa para que pud\u00e9ssemos atender esta demanda quando chegasse. As pesquisas normalmente come\u00e7am por mim: neste caso fui a pessoa que iniciou o processo de levantamento bibliogr\u00e1fico, implementa\u00e7\u00e3o das primeiras provas de conceito (POCs) e escrita dos guias internos que guiar\u00e3o nosso aprendizado (preciso escrever sobre este processo um dia).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">O aprendizado do React<\/h3>\n\n\n\n<p><strong>N\u00e3o foi f\u00e1cil<\/strong>: na realidade <strong>foi o framework mais dif\u00edcil que aprendi at\u00e9 agora<\/strong>. E confesso a voc\u00eas que ficou muito mais dif\u00edcil de aprender devido ao fato de j\u00e1 dominarmos Vue.js e Angular. Minha impress\u00e3o \u00e9 que <em>enquanto nestes frameworks mesclamos JavaScript nos templates, no React o oposto \u00e9 que ocorre: o template HTML entra no JavaScript<\/em>. E a primeira impress\u00e3o foi simplesmente p\u00e9ssima.<\/p>\n\n\n\n<p class=\"has-text-align-center\">(<a href=\"https:\/\/www.itexto.com.br\/devkico\/?p=172\" class=\"rank-math-link\">determinismo lingu\u00edstico<\/a> puro)<\/p>\n\n\n\n<p>A primeira impress\u00e3o que tinha do React \u00e9 que o c\u00f3digo abaixo parecia uma gambiarra terr\u00edvel!<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"506\" height=\"281\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2020\/03\/image-1.png\" alt=\"\" class=\"wp-image-3012\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-1.png 506w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-1-300x167.png 300w\" sizes=\"(max-width: 506px) 100vw, 506px\" \/><\/figure><\/div>\n\n\n\n<p>\u00c9 incr\u00edvel como o preconceito t\u00e9cnico opera. Levei <strong>semanas<\/strong> pra conseguir aceitar o JSX (esta sintaxe na qual voc\u00ea inclu\u00ed o template HTML no JavaScript (ou TypeScript)). Entender que aquelas tags na realidade eram c\u00f3digo JavaScript foi algo muito dif\u00edcil neste primeiro contato. Eu simplesmente n\u00e3o conseguia ler este c\u00f3digo. E pra piorar as coisas, tomei o caminho errado no aprendizado.<\/p>\n\n\n\n<p><strong>Meu grande erro<\/strong> foi ter come\u00e7ado pelo <a href=\"https:\/\/pt-br.reactjs.org\/tutorial\/tutorial.html\" class=\"rank-math-link\">tutorial<\/a> presente no site oficial do React. Se voc\u00ea est\u00e1 come\u00e7ando s\u00f3 tenho um conselho para lhe dar: <strong>ignore este tutorial<\/strong>. Voc\u00ea simplesmente vai escrevendo o c\u00f3digo que v\u00e3o te passando e no final tem um jogo da velha. O problema \u00e9 que finalizado o tutorial, eu at\u00e9 conseguia modificar o c\u00f3digo e brincar com ele, mas ainda n\u00e3o entendia como o React funcionava.<\/p>\n\n\n\n<p>Foi quando resolvi prestar aten\u00e7\u00e3o nos links que estavam na se\u00e7\u00e3o &#8220;Principais Conceitos&#8221;&#8230;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"524\" height=\"443\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2020\/03\/image-2.png\" alt=\"\" class=\"wp-image-3014\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-2.png 524w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-2-300x254.png 300w\" sizes=\"(max-width: 524px) 100vw, 524px\" \/><figcaption>COMECE POR AQUI, N\u00c3O POR AQUELE TUTORIAL S\u00c1DICO!!!<\/figcaption><\/figure><\/div>\n\n\n\n<p>Segue ent\u00e3o a dica pra quem est\u00e1 come\u00e7ando. Comece pelo <a href=\"https:\/\/pt-br.reactjs.org\/docs\/hello-world.html\" class=\"rank-math-link\">primeiro link<\/a> do guia &#8220;Principais Conceitos&#8221; e siga de cima pra baixo. Se voc\u00ea j\u00e1 tiver experi\u00eancia com outros frameworks, minha sugest\u00e3o \u00e9 outra: comece pelo \u00daLTIMO link: <a href=\"https:\/\/pt-br.reactjs.org\/docs\/thinking-in-react.html\" class=\"rank-math-link\">Pensando do jeito React<\/a>.<\/p>\n\n\n\n<p>ESTE \u00e9 o caminho. Ali \u00e9 que voc\u00ea vai entender a fundo como o JSX funciona (e ele ir\u00e1 imediatamente deixar de lhe parecer estranho, como m\u00e1gica!), como pensar de fato como componentes, lidar com eventos, entender o conceito de state e todo o resto para que finalmente voc\u00ea possa iniciar suas primeiras provas de conceito.<\/p>\n\n\n\n<p>Com isto implementei minha primeira prova de conceito: essencialmente reescrevi o front-end do <a href=\"https:\/\/devall.com.br\" class=\"rank-math-link\">\/dev\/All<\/a> em React. Aprendi muito ali, mas queria ver outros desenvolvedores programando. Ent\u00e3o comprei este curso no Udemy do <a href=\"https:\/\/www.udemy.com\/course\/react-the-complete-guide-incl-redux\/\" class=\"rank-math-link\">Maximilian<\/a>. Valeu cada centavo (foi bem barato, 22 Reais se n\u00e3o me engano), por que vendo outra pessoa codificando com o framework me passou diversas dicas que aceleraram MUITO meu aprendizado, o que me possibilitou criar mais provas de conceito.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A\u00ed o React Native caiu no meu colo<\/h3>\n\n\n\n<p>Um cliente muito especial me procurou e disse: &#8220;Kico, voc\u00ea pode dar manuten\u00e7\u00e3o em um app que fizeram pra n\u00f3s? Ele \u00e9 feito em um framework chamado <strong>expo<\/strong>&#8230;&#8221;.<\/p>\n\n\n\n<p>E o que era o <em>tal do Expo<\/em>? Era o React Native!!!<\/p>\n\n\n\n<p>Meu processo de aprendizado neste caso foi <strong>muito mais r\u00e1pido<\/strong>. Em uma semana j\u00e1 estava produtivo. Segui uma metodologia um pouco diferente: desta vez li <strong>toda<\/strong> a documenta\u00e7\u00e3o do Expo (falarei sobre ele mais \u00e0 frente) e, na sequ\u00eancia, a do React Native. E a\u00ed, sabem o que fiz? Comprei o outro curso do Maximilian de React Native que voc\u00ea pode acessar neste <a href=\"https:\/\/www.udemy.com\/course\/react-native-the-practical-guide\/\" class=\"rank-math-link\">link<\/a>.<\/p>\n\n\n\n<p>O resto \u00e9 hist\u00f3ria, mas antes \u00e9 importante que ataque um mito aqui.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">O mito que pode destruir sua experi\u00eancia de aprendizado do React Native<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>&#8220;React \u00e9 uma coisa, React Native \u00e9 outra. S\u00e3o coisas completamente diferentes&#8221;<\/p><cite>Senhor Cruel<\/cite><\/blockquote>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media1.tenor.com\/images\/9ed45fd97e55ffc6113a56f52fff988f\/tenor.gif?itemid=7890724\" alt=\"Resultado de imagem para gif mentira\" width=\"650\" height=\"488\"\/><\/figure><\/div>\n\n\n\n<p>Voc\u00ea n\u00e3o vai conseguir aprender React Native se n\u00e3o souber o essencial do React. Os mesm\u00edssimos princ\u00edpios que aprendi s\u00e3o fundamentais para se aprender React Native. A diferen\u00e7a est\u00e1, em sua ess\u00eancia, naquilo que \u00e9 renderizado.<\/p>\n\n\n\n<p>Ent\u00e3o n\u00e3o caia nesta: React Native \u00e9 uma aplica\u00e7\u00e3o do React, logo voc\u00ea tem de saber a base.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O que amei no React Native<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/www.lovecalculator.com\/dist\/images\/lovecalculator-heart.svg\" alt=\"Resultado de imagem para love\"\/><\/figure><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">A solu\u00e7\u00e3o arquitetural do React Native<\/h3>\n\n\n\n<p>Uma das coisas que mais me impressionou no React Native (RN) foi a beleza da solu\u00e7\u00e3o. \u00c9 o mesmo React que aprendi para escrever aplica\u00e7\u00f5es web, usando o mesmo JSX que aprendi a entender. No entanto a diferen\u00e7a est\u00e1 <strong>no qu\u00ea<\/strong> \u00e9 renderizado.<\/p>\n\n\n\n<p>Enquanto no React renderizo sempre tags HTML que ser\u00e3o renderizadas pelo navegador, aqui tenho algo diferente por\u00e9m muito familiar pra quem j\u00e1 programou aplica\u00e7\u00f5es desktop em Java usando <a href=\"https:\/\/www.eclipse.org\/swt\/\" class=\"rank-math-link\">SWT<\/a> (algu\u00e9m lembra disto?). No caso deste toolkit gr\u00e1fico (SWT), nossas classes que representam componentes visuais quando executadas renderizam widgets nativos do sistema operacional. Em teoria temos interfaces mais pr\u00f3ximas do usu\u00e1rio final e tamb\u00e9m mais responsivas.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"214\" height=\"739\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2020\/03\/image-3.png\" alt=\"\" class=\"wp-image-3016\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-3.png 214w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-3-87x300.png 87w\" sizes=\"(max-width: 214px) 100vw, 214px\" \/><figcaption>SWT em a\u00e7\u00e3o no mundo Java<\/figcaption><\/figure><\/div>\n\n\n\n<p>No caso do React Native, temos um conjunto de <a href=\"https:\/\/reactnative.dev\/docs\/components-and-apis\" class=\"rank-math-link\">componentes padr\u00e3o<\/a> que tamb\u00e9m s\u00e3o renderizados usando seus relativos nativos. Quando vi a lista dos componentes pela primeira vez fiquei chocado com qu\u00e3o poucos eram, mas conforme fui experimentando ficou n\u00edtido que com estas poucas primitivas eu poderia fazer praticamente qualquer coisa.<\/p>\n\n\n\n<p>Entre estes componentes e o sistema operacional nativo existe o que chamam de &#8220;JavaScript Bridge&#8221;: \u00e9 o componente arquitetural respons\u00e1vel por fazer este meio de campo e acessar as APIs de baixo n\u00edvel do sistema nativo. Naturalmente isto ir\u00e1 ter seu custo de desempenho, mas ao menos em teoria temos aqui uma solu\u00e7\u00e3o multi plataforma que nos oferece um desempenho superior ao do webview.<\/p>\n\n\n\n<p>Essencialmente o c\u00f3digo \u00e9 o mesmo que aquele que vimos no React, por\u00e9m com outras tags. Ao inv\u00e9s de &lt;div>, temos o &lt;View>, ao inv\u00e9s de &lt;p>, temos &lt;Text> e assim por diante&#8230; Sendo assim voc\u00ea escreve c\u00f3digo similar ao apresentado a seguir:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2020\/03\/image-4.png\" alt=\"\" class=\"wp-image-3017\" width=\"697\" height=\"292\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-4.png 506w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-4-300x126.png 300w\" sizes=\"(max-width: 697px) 100vw, 697px\" \/><\/figure><\/div>\n\n\n\n<p>O interessante destas abstra\u00e7\u00f5es \u00e9 que apesar delas serem voltadas inicialmente apenas para Android e iOS teoricamente podem ser aplicadas a qualquer plataforma. No link &#8220;<a href=\"https:\/\/reactnative.dev\/docs\/out-of-tree-platforms\" class=\"rank-math-link\">Out-of-Tree platforms<\/a>&#8221; voc\u00ea pode ver algumas op\u00e7\u00f5es bastante interessantes, tais como Windows, macOS, Linux, tvOS&#8230; N\u00e3o s\u00e3o oficialmente suportadas, entretanto \u00e9 bom saber que elas existem.<\/p>\n\n\n\n<p>Desenvolvedores experientes entretanto reclamam que muitas vezes voc\u00ea precisar\u00e1 mesclar c\u00f3digo nativo ao do seu projeto. Ainda n\u00e3o ocorreu conosco, mas quando rolar, tenha certeza, ir\u00e1 ter post aqui contando a experi\u00eancia.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">O &#8220;tal do <a href=\"https:\/\/expo.io\" class=\"rank-math-link\">Expo<\/a>&#8220;<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/is4-ssl.mzstatic.com\/image\/thumb\/Purple123\/v4\/65\/24\/19\/652419e4-053e-d24a-1850-da1073f092e6\/AppIcon-0-0-1x_U007emarketing-0-0-0-7-0-0-sRGB-0-0-0-GLES2_U002c0-512MB-85-220-0-0.png\/246x0w.png\" alt=\"Resultado de imagem para expo.io logo\" width=\"368\" height=\"368\"\/><figcaption>Expo \u00e9 muito lindo!<\/figcaption><\/figure><\/div>\n\n\n\n<p>Quando voc\u00ea cria um novo projeto com React Native h\u00e1 dois caminhos a seguir:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Usando o caminho bare bones do pr\u00f3prio React Native.<\/li><li>Abra\u00e7ar o Expo, que \u00e9 o ambiente de desenvolvimento gerenciado &#8211; aonde foi meu primeiro contato<\/li><\/ul>\n\n\n\n<p>Sem sombra de d\u00favidas o segundo caminho \u00e9 o melhor pra quem est\u00e1 come\u00e7ando. Expo \u00e9 uma m\u00e3e pra voc\u00ea e resolve diversos problemas:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Cuida de todo o processo de constru\u00e7\u00e3o pra voc\u00ea (tanto pra iOS quanto Android). Voc\u00ea n\u00e3o precisa ter o Android Studio ou um Mac pra compilar seu projeto. Tudo \u00e9 feito de forma remota pra voc\u00ea.<\/li><li>Fornece uma forma muito r\u00e1pida e interessante de compartilhar seus prot\u00f3tipos com seus clientes (vamos falar mais sobre isto adiante).<\/li><li>Gerencia todas as depend\u00eancias essenciais para o seu projeto, inclusive atualiza\u00e7\u00f5es do pr\u00f3prio React e bibliotecas fundamentais subjacentes. <\/li><li>Permite atualiza\u00e7\u00f5es do seu app &#8220;over the air&#8221;, ou seja, se sua mudan\u00e7a \u00e9 pequena, n\u00e3o precisa passar por todo o processo de publica\u00e7\u00e3o de uma nova vers\u00e3o na loja. No momento em que o app for iniciado este busca a nova vers\u00e3o no Expo e j\u00e1 atualiza no dispositivo do usu\u00e1rio (coisa linda!).<\/li><li>Permite o compartilhamento dos seus projetos com outros desenvolvedores de uma forma bastante simples.<\/li><li>Apresenta um fluxo de trabalho que <strong>aumenta significativamente a produtividade<\/strong> do desenvolvedor (estou tendo a mesma sensa\u00e7\u00e3o que tive quando aprendi Grails mais de 10 anos atr\u00e1s!).<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">O fluxo de trabalho com Expo<\/h2>\n\n\n\n<p>React Native me ganhou quando comecei a explorar o Expo e o fluxo de trabalho que ele me oferece. Quando estamos trabalhando em uma interface algo que \u00e9 fundamental \u00e9 o feedback. Se qualquer altera\u00e7\u00e3o em meu c\u00f3digo imediatamente \u00e9 refletida nos dispositivos que uso para validar o desenvolvimento o trabalho simplesmente flui: me sinto mais a vontade para experimentar, corrigir problemas, melhorar meu aplicativo. E o melhor: em menos tempo.<\/p>\n\n\n\n<p>Quando uso o Expo com meu ambiente de desenvolvimento j\u00e1 configurado (e a configura\u00e7\u00e3o \u00e9 banal: basta instalar o Expo) meu fluxo de trabalho consiste em dois passos: alterar meu c\u00f3digo fonte e ver o resultado nos meus dispositivos ou emuladores. Sim, \u00e9 s\u00f3 isto.<\/p>\n\n\n\n<p>O Expo \u00e9 composto essencialmente por tr\u00eas componentes:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>A ferramenta de linha de comando (npm install -g expo-cli) que voc\u00ea aprendeu a instalar entre estes par\u00eanteses.<\/li><li>O app cliente que voc\u00ea instalar\u00e1 em seu celular ou emuladores (Expo ir\u00e1 instalar isto no emulador de forma transparente para voc\u00ea).<\/li><li>O site <a href=\"https:\/\/expo.io\" class=\"rank-math-link\">expo.io<\/a> no qual voc\u00ea poder\u00e1 publicar seus projetos e gerenciar seus processos de build.<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Criando o projeto<\/h3>\n\n\n\n<p>Com o expo instalado, execute este comando: &#8220;expo init [nome do seu projeto]&#8221;. Ser\u00e1 exposto um assistente no qual voc\u00ea dever\u00e1 escolher seu template, tal como exposto na imagem a seguir.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"816\" height=\"174\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2020\/03\/image-5.png\" alt=\"\" class=\"wp-image-3020\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-5.png 816w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-5-300x64.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-5-768x164.png 768w\" sizes=\"(max-width: 816px) 100vw, 816px\" \/><\/figure>\n\n\n\n<p>Reparou que \u00e9 poss\u00edvel usar TypeScript? Ainda prefiro usar JavaScript com o React Native, mas \u00e9 interessante saber desta possibilidade. Bom, voltando ao nosso &#8220;nano guia&#8221;, selecione o que mais lhe apetece. Pronto, projeto criado.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Executando o projeto<\/h3>\n\n\n\n<p>V\u00e1 pra pasta que cont\u00e9m seu projeto e execute um dos comandos a seguir: &#8220;npm start&#8221; ou &#8220;expo start&#8221;. Ir\u00e1 abrir o navegador padr\u00e3o expondo a seguinte interface para voc\u00ea.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"881\" height=\"724\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2020\/03\/image-6.png\" alt=\"\" class=\"wp-image-3021\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-6.png 881w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-6-300x247.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-6-768x631.png 768w\" sizes=\"(max-width: 881px) 100vw, 881px\" \/><\/figure>\n\n\n\n<p>Ser\u00e1 iniciado um servidor. Observe que h\u00e1 um QR code ali. Caso seus emuladores j\u00e1 estejam iniciados, clicando em &#8220;Run on Android emulator&#8221; ou &#8220;Run on IOS simulator&#8221; ir\u00e1 instalar o app do Expo no emulador e, na sequ\u00eancia, iniciar\u00e1 o seu projeto neste cliente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Use e abuse do app do Expo<\/h3>\n\n\n\n<p>J\u00e1 instalou o Expo Client no seu celular (link pra <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=host.exp.exponent&amp;hl=pt_BR\" class=\"rank-math-link\">Android<\/a> e <a href=\"https:\/\/apps.apple.com\/br\/app\/expo-client\/id982107779\" class=\"rank-math-link\">iOS<\/a>)? Instale. Agora pegue sua c\u00e2mera e aponte para o QR code que viu acima. Boom! O app \u00e9 carregado no seu celular. Agora toda altera\u00e7\u00e3o que voc\u00ea fizer ir\u00e1 automaticamente ser refletida no seu dispositivo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Compartilhe seu app usando o Expo Client<\/h3>\n\n\n\n<p>Notou que no print acima existe um link chamado &#8220;Publish or republish project&#8221;? Ent\u00e3o: clicando ali voc\u00ea ir\u00e1 publicar seu app no site expo.io. E a\u00ed basta que seus clientes tenham o cliente instalado em seu celular para abrir seu projeto. Ser\u00e1 disponibilizado a voc\u00ea um link. Apenas envie-o para seus clientes e eles poder\u00e3o interagir com seu projeto.<\/p>\n\n\n\n<p>O Expo client ir\u00e1 baixar o c\u00f3digo fonte e execut\u00e1-lo no celular de quem tiver seu link. Aproveitando, quer testar meu beta do \/dev\/All mobile? Se voc\u00ea tiver Android, clique neste <a href=\"https:\/\/expo.io\/@kicolobo\/devallmobile\" class=\"rank-math-link\">link<\/a>.<\/p>\n\n\n\n<p>Quer ver como \u00e9 a URL? Aqui: <a href=\"https:\/\/expo.io\/@kicolobo\/devallmobile\" class=\"rank-math-link\">https:\/\/expo.io\/@kicolobo\/devallmobile <\/a><\/p>\n\n\n\n<p>Maravilhoso! Agora seus clientes podem testar seu app sem precisarem passar por todo aquele ciclo de publica\u00e7\u00e3o na App Store. Se voc\u00ea usa Android, sua vida t\u00e1 ganha. Se usa iPhone&#8230; a coisa \u00e9 mais triste por que h\u00e1 limita\u00e7\u00f5es. Essencialmente apenas o dono do app pode execut\u00e1-lo pelo Expo client. :(<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Publicando seu app nas lojas com Expo<\/h2>\n\n\n\n<p>O Expo cuida disto pra voc\u00ea tamb\u00e9m. Se voc\u00ea executar o comando &#8220;expo build (android:ios)&#8221;. Seu projeto ser\u00e1 pr\u00e9-compilado em seu computador e na sequ\u00eancia submetido para o site expo.io, aonde ser\u00e1 devidamente compilado e constru\u00eddo na sequ\u00eancia. <\/p>\n\n\n\n<p>Mas nem tudos s\u00e3o flores. Se voc\u00ea tem uma conta gratuita do servi\u00e7o pode levar um bom tempo para executar sua compila\u00e7\u00e3o (j\u00e1 tive de esperar pelo menos uma hora). Entretanto, quando sua compila\u00e7\u00e3o estiver pronta, voc\u00ea poder\u00e1 baixar o pacote e iniciar o processo de publica\u00e7\u00e3o nas lojas. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"539\" height=\"320\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2020\/03\/image-7.png\" alt=\"\" class=\"wp-image-3022\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-7.png 539w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image-7-300x178.png 300w\" sizes=\"(max-width: 539px) 100vw, 539px\" \/><figcaption>meus \u00faltimos builds no expo.io<\/figcaption><\/figure><\/div>\n\n\n\n<p>O expo tamb\u00e9m ir\u00e1 cuidar de todo o processo de assinatura digital dos seus apps, atividade esta que pode ser bem chatinha (especialmente no caso do iOS). <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Limita\u00e7\u00f5es do Expo<\/h2>\n\n\n\n<p>Tava bom demais pra ser verdade, n\u00e9? \u00c9! A primeira limita\u00e7\u00e3o \u00e9 o tempo de constru\u00e7\u00e3o do seu projeto. No caso do Expo ele sempre \u00e9 constru\u00eddo na infraestrutura deles, n\u00e3o localmente no seu computador. \u00c9 at\u00e9 poss\u00edvel se livrar disto, mas voc\u00ea teria de executar o processo de &#8220;eject&#8221;, isto \u00e9, abandonar o Expo e come\u00e7ar a andar por conta pr\u00f3pria, executando diversas atividades que o Expo executa automaticamente de forma manual.<\/p>\n\n\n\n<p>Al\u00e9m disto o Expo n\u00e3o tem acesso a todas as APIs nativas que o React Native &#8220;puro&#8221; tem. Ali\u00e1s, a pr\u00f3pria equipe do Expo deixa bem claro estas limita\u00e7\u00f5es. Leia atentamente este <a href=\"https:\/\/docs.expo.io\/versions\/v36.0.0\/introduction\/why-not-expo\/\" class=\"rank-math-link\">link<\/a> antes de iniciar seu projeto. Talvez alguma destas limita\u00e7\u00f5es torne o Expo uma p\u00e9ssima escolha para voc\u00ea.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Se livrando do Expo<\/h2>\n\n\n\n<p>Ok, seu app cresceu e agora voc\u00ea come\u00e7ou a topar com as limita\u00e7\u00f5es do Expo. O que voc\u00ea faz? Reescreve do zero? Nope: voc\u00ea &#8220;ejeta&#8221; seu app. \u00c9 poss\u00edvel jogar o Expo fora. Executando o comando &#8220;expo eject&#8221; voc\u00ea transforma seu projeto Expo em um projeto React Native padr\u00e3o.<\/p>\n\n\n\n<p>Agora voc\u00ea n\u00e3o tem mais as limita\u00e7\u00f5es do Expo, mas est\u00e1 por conta pr\u00f3pria. Saiu da casa dos pais, agora voc\u00ea \u00e9 um adulto e provavelmente sentir\u00e1 saudades da inf\u00e2ncia em breve. :)<\/p>\n\n\n\n<p>O triste \u00e9 que este \u00e9 um caminho sem volta. Voc\u00ea pode sair do Expo, mas n\u00e3o pode (ainda) voltar a este. Leve isto em considera\u00e7\u00e3o. Sinceramente, vejo o Expo como o caminho inicial a ser seguido na prototipa\u00e7\u00e3o, e o processo de &#8220;eject&#8221; como um caminho poss\u00edvel pro seu projeto.<\/p>\n\n\n\n<p>Entretanto, dado que a esmagadora maioria dos projetos \u00e9 muito simples, acredito que o Expo ir\u00e1 lhe atender por um bom tempo (talvez pra sempre).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">E o que n\u00e3o acho t\u00e3o legal no React Native?<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/hotcorn-cdn.s3.amazonaws.com\/wp-content\/uploads\/sites\/5\/2019\/06\/27123618\/The-Good-The-Bad-And-The-Ugly-Clint-Eastwood.jpg\" alt=\"Resultado de imagem para the ugly\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Formul\u00e1rios<\/h3>\n\n\n\n<p>Na realidade esta \u00e9 minha cr\u00edtica ao React: n\u00e3o temos o binding bi-direcional aqui tal como temos no Angular e Vue. Ao inv\u00e9s disto temos um modelo reativo mesmo: o componente pai deve enviar seu estado para os outros componentes filhos e assim sucessivamente (em condi\u00e7\u00f5es ideais de temperatura e press\u00e3o).<\/p>\n\n\n\n<p>No caso do React Native este n\u00e3o ser\u00e1 um grande problema, mesmo por que n\u00e3o \u00e9 interessante formul\u00e1rios complexos em aplica\u00e7\u00f5es m\u00f3veis, mas esta \u00e9 uma limita\u00e7\u00e3o que pode te chatear. Mas n\u00e3o fique triste, voc\u00ea ainda pode usar a biblioteca <a href=\"https:\/\/github.com\/jaredpalmer\/formik\" class=\"rank-math-link\">Formik<\/a>, que ajuda mas n\u00e3o resolve totalmente o problema.<\/p>\n\n\n\n<p>Sobre o binding bi-direcional. Faz todo o sentido com o tempo conforme voc\u00ea entende a l\u00f3gica por tr\u00e1s do React em si, entretanto no in\u00edcio \u00e9 muito dif\u00edcil de se acostumar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lentid\u00e3o para iniciar<\/h3>\n\n\n\n<p>Em alguns momentos experimentei uma certa lentid\u00e3o na inicializa\u00e7\u00e3o dos meus apps. Entretanto j\u00e1 sei como lidar com esta situa\u00e7\u00f5es, o que ser\u00e1 assunto para um post futuro.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">React Redux<\/h3>\n\n\n\n<p>Vai, podem atirar pedras em mim. As mesmas cr\u00edticas que tenho ao <a href=\"https:\/\/vuex.vuejs.org\/\" class=\"rank-math-link\">Vuex<\/a> tenho ao <a href=\"https:\/\/react-redux.js.org\/\" class=\"rank-math-link\">Redux<\/a>. Se voc\u00ea n\u00e3o conhece, o Redux (assim como Vuex) resolvem o problema do estado compartilhado entre componentes. <\/p>\n\n\n\n<p>Se voc\u00ea quer ter um estado compartilhado entre mais de um componente a solu\u00e7\u00e3o mais elegante \u00e9 usando estas bibliotecas. Problema: n\u00e3o s\u00e3o f\u00e1ceis de pegar o jeito. Leva um tempo at\u00e9 voc\u00ea entender como de fato funcionam.<\/p>\n\n\n\n<p>Outro problema ocorre conforme as aplica\u00e7\u00f5es crescem de tamanho e complexidade: voc\u00ea precisa ficar <strong>muito esperto<\/strong> para n\u00e3o criar um &#8220;monstro redux&#8221; a\u00ed. Pode aumentar significativamente a complexidade do seu projeto, especialmente se algu\u00e9m tiver a infeliz ideia de colocar l\u00f3gicas complexas nos reducers&#8230;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">JavaScript &#8211; mas nem \u00e9 um problema t\u00e3o grande assim<\/h3>\n\n\n\n<p>A aus\u00eancia de tipagem forte do JavaScript pode ser um problema. J\u00e1 fiz algumas experi\u00eancias com TypeScript, que em teoria resolveria a quest\u00e3o, mas ainda n\u00e3o obtive resultados que me satisfa\u00e7am plenamente. Essencialmente falta documenta\u00e7\u00e3o: \u00e9 mais f\u00e1cil seguir o caminho JavaScript com React.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">E pra finalizar, nosso novo projeto: \/dev\/All mobile!<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"500\" src=\"https:\/\/www.itexto.com.br\/devkico\/wp-content\/uploads\/2020\/03\/imagem-comercial.png\" alt=\"\" class=\"wp-image-3023\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/imagem-comercial.png 1024w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/imagem-comercial-300x146.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/imagem-comercial-768x375.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Em nosso processo de aprendizado documentamos diversas dificuldades que desenvolvedores podem ter ao darem seus primeiros passos com React Native. Sendo assim resolvemos lan\u00e7ar o proejto &#8220;\/dev\/All mobile&#8221;. Como o pr\u00f3prio nome j\u00e1 diz, trata-se de um cliente m\u00f3vel para o nosso amado <a href=\"https:\/\/devall.com.br\" class=\"rank-math-link\">\/dev\/All<\/a>.<\/p>\n\n\n\n<p>Estamos essencialmente reimplementando todas as funcionalidades do front-end existente hoje. A diferen\u00e7a \u00e9 que <strong>voc\u00eas<\/strong> poder\u00e3o acompanhar o seu desenvolvimento. Enquanto termino este post aguardo a libera\u00e7\u00e3o da vers\u00e3o beta que j\u00e1 est\u00e1 publicada no Google Play Store (vers\u00e3o para iOS vir\u00e1 na sequ\u00eancia, n\u00e3o fiquem tristes!).<\/p>\n\n\n\n<p>O primeiro release \u00e9 super simples: voc\u00ea conseguir\u00e1 essencialmente executar as seguintes fun\u00e7\u00f5es:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Ver os \u00faltimos posts encontrados por nosso crawler.<\/li><li>Buscar por posts antigos.<\/li><li>Ver detalhes sobre os blogs e sites que publicaram os posts.<\/li><li>Compartilhar estes posts com seus amigos (o compartilhamento mobile \u00e9 <strong>muito<\/strong> <strong>melhor<\/strong> que aquele presente no front-end oficial).<\/li><\/ul>\n\n\n\n<p>Com o tempo e a sa\u00edda de novos releases, a ideia \u00e9 ensinar a voc\u00eas como executar atividades mais complexas, tais como:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Persist\u00eancia de dados localmente.<\/li><li>Como gerenciar notifica\u00e7\u00f5es.<\/li><li>Dicas de seguran\u00e7a.<\/li><li>Execu\u00e7\u00e3o em segundo plano.<\/li><li>E, claro, as entranhas do React Native que ir\u00e3o surgindo com o passar do tempo.<\/li><li>Como aplicar estilos a seus componentes.<\/li><li>Como lidar com a navega\u00e7\u00e3o (e evitar s\u00e9rios problemas).<\/li><li>Entender de uma vez por todas como usar o React Redux (e persistir este estado).<\/li><\/ul>\n\n\n\n<p>Enquanto n\u00e3o divulgo aqui os links para as lojas, voc\u00ea j\u00e1 pode experimentar o primeiro release deste beta <strong>agora<\/strong>. Para tal basta ter o Expo Cli instalado em seu celular e acessar este link:  <a href=\"https:\/\/expo.io\/@kicolobo\/devallmobile\" class=\"rank-math-link\">https:\/\/expo.io\/@kicolobo\/devallmobile <\/a> <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">E a trilha que segue<\/h2>\n\n\n\n<p>Este \u00e9 meu segundo post sobre React neste blog. Tenho aprendido <strong>muito<\/strong> e tenham certeza de que muitos outros posts vir\u00e3o pra c\u00e1 nas pr\u00f3ximas semanas e meses. Gostaria de saber a experi\u00eancia de voc\u00eas com estas ferramentas. J\u00e1 usaram? O que acharam?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Com tem sido minha experi\u00eancia com React Native e apresentando nosso novo projeto: o \/dev\/All mobile, que servir\u00e1 para ilustrar diversos dos pontos que trataremos aqui neste blog.<\/p>\n","protected":false},"author":1,"featured_media":3010,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[90,101],"tags":[103,93,102],"class_list":["post-3009","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-react","category-react-native","tag-mobile","tag-react","tag-react-native"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Explorando o React Native - \/dev\/Kico<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=3009\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Explorando o React Native - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"Com tem sido minha experi\u00eancia com React Native e apresentando nosso novo projeto: o \/dev\/All mobile, que servir\u00e1 para ilustrar diversos dos pontos que trataremos aqui neste blog.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=3009\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-10T01:57:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-03-10T01:57:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"345\" \/>\n\t<meta property=\"og:image:height\" content=\"302\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=3009\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=3009\",\"name\":\"Explorando o React Native - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=3009#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=3009#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image.png\",\"datePublished\":\"2020-03-10T01:57:25+00:00\",\"dateModified\":\"2020-03-10T01:57:30+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=3009#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=3009\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=3009#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image.png\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image.png\",\"width\":345,\"height\":302},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=3009#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Explorando o React Native\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Explorando o React Native - \/dev\/Kico","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devkico.itexto.com.br\/?p=3009","og_locale":"pt_BR","og_type":"article","og_title":"Explorando o React Native - \/dev\/Kico","og_description":"Com tem sido minha experi\u00eancia com React Native e apresentando nosso novo projeto: o \/dev\/All mobile, que servir\u00e1 para ilustrar diversos dos pontos que trataremos aqui neste blog.","og_url":"https:\/\/devkico.itexto.com.br\/?p=3009","og_site_name":"\/dev\/Kico","article_published_time":"2020-03-10T01:57:25+00:00","article_modified_time":"2020-03-10T01:57:30+00:00","og_image":[{"width":345,"height":302,"url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image.png","type":"image\/png"}],"author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"16 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=3009","url":"https:\/\/devkico.itexto.com.br\/?p=3009","name":"Explorando o React Native - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=3009#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=3009#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image.png","datePublished":"2020-03-10T01:57:25+00:00","dateModified":"2020-03-10T01:57:30+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=3009#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=3009"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=3009#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image.png","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image.png","width":345,"height":302},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=3009#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"Explorando o React Native"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2020\/03\/image.png","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/3009"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3009"}],"version-history":[{"count":7,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/3009\/revisions"}],"predecessor-version":[{"id":3025,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/3009\/revisions\/3025"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/media\/3010"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3009"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3009"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}