{"id":15803,"date":"2019-05-21T12:20:00","date_gmt":"2019-05-21T15:20:00","guid":{"rendered":"https:\/\/blog.hostinger.io\/br-tutoriais\/?p=15803"},"modified":"2025-12-16T20:45:27","modified_gmt":"2025-12-16T23:45:27","slug":"o-que-e-react-javascript","status":"publish","type":"post","link":"\/br\/tutoriais\/o-que-e-react-javascript","title":{"rendered":"React descomplicado: o que \u00e9 e como come\u00e7ar j\u00e1!"},"content":{"rendered":"<p>O ReactJS &eacute; uma das bibliotecas de JavaScript mais populares para desenvolvimento de aplicativos web ou para dispositivos m&oacute;veis. Criado pelo Facebook, o React cont&eacute;m uma cole&ccedil;&atilde;o de trechos de c&oacute;digo de JavaScript reutiliz&aacute;veis chamados componentes, usados para a constru&ccedil;&atilde;o da interface do usu&aacute;rio (UI).<\/p><p>&Eacute; importante observar que o ReactJS n&atilde;o &eacute; um framework JavaScript. Isso porque ela &eacute; respons&aacute;vel apenas por renderizar os componentes da camada de visualiza&ccedil;&atilde;o de uma aplica&ccedil;&atilde;o. O React &eacute; uma alternativa a frameworks como Angular e Vue, que permitem criar fun&ccedil;&otilde;es complexas.<\/p><p>Este artigo explorar&aacute; os recursos do React, explicar&aacute; como ele funciona e abordar&aacute; seus benef&iacute;cios para desenvolvedores front-end. Tamb&eacute;m abordaremos as diferen&ccedil;as entre o ReactJS e o React Native em rela&ccedil;&atilde;o &agrave;s suas fun&ccedil;&otilde;es na ind&uacute;stria de desenvolvimento de aplicativos m&oacute;veis e para a web.<\/p><p>Tamb&eacute;m explicaremos como implementar um aplicativo React na Hostinger.<\/p><p class=\"has-text-align-center\"><a href=\"https:\/\/assets.hostinger.com\/content\/BR-Web-Development-Glossary-for-Beginners.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Baixar Gloss&aacute;rio Completo de Desenvolvimento Web<\/a><\/p><p>\n\n\n\n\n\n\n<\/p><h2 class=\"wp-block-heading\" id=\"h-recursos-do-react\">Recursos do React<\/h2><p>O React possui alguns recursos principais que fazem com que ele se destaque de outras bibliotecas JavaScript. As se&ccedil;&otilde;es a seguir apresentar&atilde;o esses recursos e explicar&atilde;o como eles contribuem para o desenvolvimento de aplicativos web e para dispositivos m&oacute;veis.<\/p><h3 class=\"wp-block-heading\" id=\"h-jsx\">JSX<\/h3><p>O JSX &eacute; uma extens&atilde;o de sintaxe JavaScript usada na cria&ccedil;&atilde;o do elemento React. Os desenvolvedores a empregam para incorporar c&oacute;digo <a href=\"\/br\/tutoriais\/codigos-html-prontos-guia-pdf\">HTML<\/a> em objetos JavaScript. Como o JSX aceita a incorpora&ccedil;&atilde;o de fun&ccedil;&otilde;es e express&otilde;es JavaScript v&aacute;lidas, ele pode simplificar estruturas de c&oacute;digo complexas.<\/p><p>Vamos dar uma olhada em um bloco de c&oacute;digo que mostra como incorporar uma express&atilde;o no JSX:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">const name = 'Jo&atilde;o da Silva;\nconst element = h1&gt;Ol&aacute;, {name}\/h1&gt;;\nReactDOM.render(\n  element,\n  document.getElementById('root')\n);<\/pre><p>Na segunda linha, n&oacute;s chamamos a vari&aacute;vel <strong>name<\/strong> dentro de um elemento React ao coloc&aacute;-la dentro das chaves.<\/p><p>Enquanto isso, a fun&ccedil;&atilde;o <strong>ReactDOM.render()<\/strong> renderiza o elemento React na &aacute;rvore do Document Object Model (DOM), descrevendo a interface do usu&aacute;rio.<\/p><p>O JSX tamb&eacute;m ajuda a combater ataques <a href=\"https:\/\/www.kaspersky.com.br\/resource-center\/definitions\/what-is-a-cross-site-scripting-attack\" target=\"_blank\" rel=\"noopener\">Cross-Site Scripting<\/a> (XSS). Por padr&atilde;o, o React DOM converte os valores embutidos no JSX em strings antes de renderiz&aacute;-los. Consequentemente, terceiros n&atilde;o podem injetar c&oacute;digo extra por meio da entrada do usu&aacute;rio, a menos que seja explicitamente escrito no aplicativo.<\/p><p>Mais adiante neste artigo, discutiremos com mais detalhes o papel do JSX na cria&ccedil;&atilde;o de componentes React.<\/p><h3 class=\"wp-block-heading\" id=\"h-virtual-dom\">Virtual DOM<\/h3><p>O Document Object Model (DOM) apresenta uma p&aacute;gina da web atrav&eacute;s de uma estrutura de &aacute;rvore de dados. O ReactJS armazena &aacute;rvores DOM virtuais na mem&oacute;ria. Ao fazer isso, o React pode aplicar atualiza&ccedil;&otilde;es a partes espec&iacute;ficas da &aacute;rvore de dados, o que &eacute; mais r&aacute;pido do que renderizar novamente toda a &aacute;rvore DOM.<\/p><p>Sempre que houver uma altera&ccedil;&atilde;o nos dados, o ReactJS ir&aacute; gerar uma nova &aacute;rvore Virtual DOM e compar&aacute;-la com a anterior para encontrar a maneira mais r&aacute;pida poss&iacute;vel de implementar altera&ccedil;&otilde;es no DOM real. Este processo &eacute; conhecido como diffing.<\/p><p>Ao garantir que a manipula&ccedil;&atilde;o da interface do usu&aacute;rio afete apenas se&ccedil;&otilde;es espec&iacute;ficas da &aacute;rvore DOM real, a renderiza&ccedil;&atilde;o da vers&atilde;o atualizada leva menos tempo e usa menos recursos. A pr&aacute;tica beneficia muito grandes projetos com intensa intera&ccedil;&atilde;o do usu&aacute;rio.<\/p><h3 class=\"wp-block-heading\">Componentes e Props<\/h3><p>O ReactJS divide a interface de usu&aacute;rio em peda&ccedil;os de c&oacute;digo isolados e reutiliz&aacute;veis, conhecidos como componentes. Os componentes do React funcionam de maneira semelhante &agrave;s fun&ccedil;&otilde;es JavaScript, pois aceitam entradas arbitr&aacute;rias chamadas propriedades ou props.<\/p><p>Os elementos React retornados determinam como a interface do usu&aacute;rio ficar&aacute; no lado do cliente. Aqui est&aacute; um exemplo de um componente de fun&ccedil;&atilde;o que retorna um elemento React:<\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"js\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">function Welcome(props) {\n  return h1&gt;Ol&aacute;, {props.name}\/h1&gt;;\n}<\/pre><p>&Eacute; poss&iacute;vel ter quantos componentes forem necess&aacute;rios sem sobrecarregar seu c&oacute;digo.<\/p><h3 class=\"wp-block-heading\">Gerenciamento de Estado<\/h3><p>Um estado &eacute; um objeto JavaScript que representa uma parte de um componente. Ele muda sempre que um usu&aacute;rio interage com o aplicativo, renderizando uma nova interface do usu&aacute;rio para refletir as modifica&ccedil;&otilde;es.<\/p><p>O gerenciamento de estado refere-se &agrave; pr&aacute;tica de gerenciar os estados do aplicativo React. Ele inclui o armazenamento de dados em bibliotecas de gerenciamento de estado de terceiros e o acionamento do processo de renderiza&ccedil;&atilde;o sempre que os dados s&atilde;o alterados.<\/p><p>Uma biblioteca de gerenciamento de estado facilita a comunica&ccedil;&atilde;o e o compartilhamento de dados entre os componentes do React. V&aacute;rias bibliotecas de gerenciamento de estado de terceiros est&atilde;o dispon&iacute;veis hoje, mas duas das mais populares s&atilde;o <strong>Redux<\/strong> e <strong>Recoil<\/strong>.<\/p><p><strong>Redux<\/strong><\/p><p>A biblioteca de gerenciamento de estado do <a href=\"https:\/\/redux.js.org\/\" target=\"_blank\" rel=\"noopener\">Redux<\/a> possui um armazenamento centralizado, que permite manter previs&iacute;vel a &aacute;rvore de estado de um aplicativo. A biblioteca tamb&eacute;m reduz a inconsist&ecirc;ncia de dados, impedindo que dois componentes atualizem o estado do aplicativo simultaneamente.<\/p><p>A arquitetura do Redux suporta registro de erros para facilitar a depura&ccedil;&atilde;o e possui um m&eacute;todo de organiza&ccedil;&atilde;o de c&oacute;digo estrito, simplificando a manuten&ccedil;&atilde;o. Al&eacute;m disso, ela possui um grande n&uacute;mero de complementos e &eacute; compat&iacute;vel com todas as camadas da interface do usu&aacute;rio.<\/p><p>Dito isso, o Redux &eacute; bastante complexo e, portanto, abaixo do ideal para pequenos aplicativos com uma &uacute;nica fonte de dados.<\/p><p><strong>Recoil<\/strong><\/p><p>O <a href=\"https:\/\/recoiljs.org\/\" target=\"_blank\" rel=\"noopener\">Recoil<\/a> &eacute; uma biblioteca de gerenciamento de estado JavaScript lan&ccedil;ada pelo Facebook. Ele emprega fun&ccedil;&otilde;es puras chamadas seletores para calcular dados de unidades atualiz&aacute;veis conhecidas como <a href=\"https:\/\/recoiljs.org\/docs\/introduction\/core-concepts\/#atoms\" target=\"_blank\" rel=\"noopener\">atoms<\/a>. V&aacute;rios componentes podem se inscrever no mesmo atom e, assim, compartilhar um estado.<\/p><p>O uso de atoms e seletores evita estados redundantes, simplifica o c&oacute;digo e elimina reprocessamentos excessivos de React e quaisquer componentes filhos. O Recoil &eacute; mais adequado para iniciantes do que o Redux, j&aacute; que seus conceitos b&aacute;sicos s&atilde;o consideravelmente mais f&aacute;ceis de entender.<\/p><h3 class=\"wp-block-heading\">Navega&ccedil;&atilde;o Program&aacute;tica<\/h3><p>A navega&ccedil;&atilde;o program&aacute;tica refere-se a inst&acirc;ncias em que as linhas de c&oacute;digo criam uma a&ccedil;&atilde;o que redireciona um usu&aacute;rio. As a&ccedil;&otilde;es de login e inscri&ccedil;&atilde;o, por exemplo, navegam programaticamente os usu&aacute;rios para novas p&aacute;ginas.<\/p><p>O <a href=\"https:\/\/reactrouter.com\/en\/main\" target=\"_blank\" rel=\"noopener\">React Router<\/a>, biblioteca padr&atilde;o do React para roteamento, fornece v&aacute;rias formas de navega&ccedil;&atilde;o program&aacute;tica segura entre os componentes sem exigir que o usu&aacute;rio clique em um link.<\/p><p>Usar um componente <strong>Redirect<\/strong> &eacute; o principal m&eacute;todo de navega&ccedil;&atilde;o program&aacute;tica, com o <strong>history.push()<\/strong> sendo uma abordagem alternativa.<\/p><p>Resumindo, o pacote React Router sincroniza a interface do usu&aacute;rio com a URL, dando a voc&ecirc; o controle sobre a apar&ecirc;ncia dos aplicativos React sem depender de links.<\/p><h2 class=\"wp-block-heading\" id=\"h-por-que-usar-react\"><b>Por Que Usar React?<\/b><\/h2><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"425\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/05\/react-js-homepage.jpg\/public\" alt=\"p&aacute;gina inicial do site do react.js\" class=\"wp-image-36901\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/05\/react-js-homepage.jpg\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/05\/react-js-homepage.jpg\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/05\/react-js-homepage.jpg\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/05\/react-js-homepage.jpg\/w=768,fit=scale-down 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div><p><span style=\"font-weight: 400\">O React tem sido usado por grandes companhias ao redor do mundo. Algumas delas: <\/span><a href=\"http:\/\/netflix.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">Netflix<\/span><\/a><span style=\"font-weight: 400\">, <\/span><a href=\"https:\/\/www.airbnb.com.br\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">Airbnb<\/span><\/a><span style=\"font-weight: 400\">, <\/span><a href=\"https:\/\/www.americanexpress.com\/br\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">American Express<\/span><\/a><span style=\"font-weight: 400\">, Facebook, <\/span><a href=\"https:\/\/www.whatsapp.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">WhatsApp<\/span><\/a><span style=\"font-weight: 400\">, <\/span><a href=\"https:\/\/www.ebay.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">eBay<\/span><\/a><span style=\"font-weight: 400\"> e <\/span><a href=\"https:\/\/www.instagram.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">Instagram<\/span><\/a><span style=\"font-weight: 400\">. Essa &eacute; a prova de que a ferramenta tem um n&uacute;mero de vantagens que n&atilde;o t&ecirc;m nem compara&ccedil;&atilde;o nos seus competidores.<\/span><\/p><p><span style=\"font-weight: 400\">Abaixo est&atilde;o algumas das raz&otilde;es para usar o React.<\/span><\/p><h3 class=\"wp-block-heading\" id=\"h-1-facil-de-usar\"><b>1. F&aacute;cil de Usar<\/b><\/h3><p><span style=\"font-weight: 400\">O React &eacute; uma biblioteca de c&oacute;digo aberto para interfaces gr&aacute;ficas (<\/span><a href=\"https:\/\/www.computerhope.com\/jargon\/g\/gui.htm\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">GUI<\/span><\/a><span style=\"font-weight: 400\">) que tem como foco uma s&oacute; coisa: tornar a experi&ecirc;ncia do usu&aacute;rio com a interface mais eficiente. Ela pode ser categorizada como o &ldquo;V&rdquo; no padr&atilde;o <\/span><a href=\"https:\/\/www.youtube.com\/watch?v=pCvZtjoRq1I\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">MVC<\/span><\/a><span style=\"font-weight: 400\"> (Model-View-Controller).<\/span><\/p><p><span style=\"font-weight: 400\">Como um desenvolvedor de JavaScript, vai ser f&aacute;cil para voc&ecirc; entender o b&aacute;sico do React.<\/span><\/p><p><span style=\"font-weight: 400\">Para fortalecer seu entendimento, d&ecirc; uma explorada em alguns dos <\/span><a href=\"https:\/\/pt-br.reactjs.org\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">tutoriais<\/span><\/a><span style=\"font-weight: 400\"> j&aacute; existentes sobre o React. Eles cont&ecirc;m muita informa&ccedil;&atilde;o de como usar a ferramenta, como v&iacute;deos, tutoriais e dados que podem enriquecer seus conhecimentos. &nbsp;<\/span><\/p><h3 class=\"wp-block-heading\" id=\"h-2-suporte-a-componente-reusavel-em-java\"><b>2. Suporte a Componente Reus&aacute;vel em Java<\/b><\/h3><p><span style=\"font-weight: 400\">O React permite que voc&ecirc; reuse componentes que tenham sido desenvolvido em outras aplica&ccedil;&otilde;es e que usem a mesma fun&ccedil;&atilde;o. A fun&ccedil;&atilde;o de reusabilidade &eacute; uma vantagem importante para desenvolvedores em geral.&nbsp;<\/span><\/p><h3 class=\"wp-block-heading\" id=\"h-3-componente-facil-de-escrever\"><b>3. Componente F&aacute;cil de Escrever<\/b><\/h3><p><span style=\"font-weight: 400\">Tamb&eacute;m conhecido como React JS, o componente do React &eacute; f&aacute;cil de escrever porque ele usa <\/span><a href=\"https:\/\/www.fullstackreact.com\/30-days-of-react\/day-2\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">JSX<\/span><\/a><span style=\"font-weight: 400\">, uma extens&atilde;o de sintaxe opcional para JavaScript. Ela permite que voc&ecirc; combine HTML com JavaScript. &nbsp;<\/span><\/p><p><span style=\"font-weight: 400\">O JSX &eacute; uma excelente combina&ccedil;&atilde;o de JavaScript e <\/span><a href=\"https:\/\/www.hostinger.com\/br\/tutoriais\/codigos-html-prontos-guia-pdf\"><span style=\"font-weight: 400\">HTML<\/span><\/a><span style=\"font-weight: 400\">. Ela simplesmente simplifica toda a estrutura de codifica&ccedil;&atilde;o escrita de um site. Al&eacute;m disso, a extens&atilde;o tamb&eacute;m faz com que a renderiza&ccedil;&atilde;o de m&uacute;ltiplas fun&ccedil;&otilde;es seja mais f&aacute;cil.<\/span><\/p><p><span style=\"font-weight: 400\">Ainda que o JSX n&atilde;o seja a extens&atilde;o de sintaxe mais popular, ela tem provado ser bastante eficiente. Especialmente quando falamos em desenvolver componentes especiais ou aplica&ccedil;&otilde;es de alto rendimento. &nbsp;<\/span><\/p><h3 class=\"wp-block-heading\" id=\"h-4-melhor-desempenho-com-virtual-dom\"><b>4. Melhor Desempenho com Virtual DOM<\/b><\/h3><p><span style=\"font-weight: 400\">O React melhora, de maneira eficiente, o processo de atualiza&ccedil;&atilde;o do <\/span><a href=\"https:\/\/css-tricks.com\/dom\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400\">DOM<\/span><\/a><span style=\"font-weight: 400\"> (<em>Document Object Model<\/em>). Como voc&ecirc; deve saber, esse processo pode causar muita frustra&ccedil;&atilde;o em projetos baseados em aplica&ccedil;&otilde;es-web. Por sorte, o React usa Virtual DOMs, ent&atilde;o voc&ecirc; consegue driblar esses problemas.<\/span><\/p><p><span style=\"font-weight: 400\">A ferramenta permite que voc&ecirc; construa um Virtual DOM e o hospede na mem&oacute;ria. Como resultado, toda vez que acontece uma mudan&ccedil;a no DOM real, o virtual se modifica imediatamente.<\/span><span style=\"font-weight: 400\"> &nbsp;&nbsp;&nbsp;&nbsp;<\/span><\/p><p><span style=\"font-weight: 400\">O sistema vai impedir que o DOM real fa&ccedil;a atualiza&ccedil;&otilde;es constantemente. Por conta disso, a velocidade da sua aplica&ccedil;&atilde;o n&atilde;o vai ser interrompida.&nbsp;<\/span><\/p><h3 class=\"wp-block-heading\" id=\"h-5-nbsp-amigavel-a-seo\"><b>5. &nbsp;Amig&aacute;vel a SEO<\/b><\/h3><p><span style=\"font-weight: 400\">O React permite que voc&ecirc; crie uma interface de usu&aacute;rio que pode ser encontrada e acessa em diversos motores de busca. Esse recurso &eacute; uma vantagem sensacional porque nem todos os frameworks de JavaScript s&atilde;o amig&aacute;veis a <\/span><a href=\"https:\/\/www.hostinger.com\/br\/tutoriais\/30-tecnicas-de-seo-para-wordpress\/\"><span style=\"font-weight: 400\">SEO<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/p><p><span style=\"font-weight: 400\">Junto a isso, como o React melhora o processamento da sua aplica&ccedil;&atilde;o, ele tamb&eacute;m pode melhorar os resultados do seu SEO. Afinal, o tempo de carregamento de um site &eacute; um fator crucial na otimiza&ccedil;&atilde;o de SEO. &nbsp;<\/span><\/p><p><span style=\"font-weight: 400\">Por&eacute;m, voc&ecirc; deve se atentar ao fato de que o React &eacute; apenas uma biblioteca JavaScript. Isso significa que voc&ecirc; n&atilde;o pode fazer tudo com ele. O uso de bibliotecas adicionais podem ser necess&aacute;rias para prop&oacute;sitos de gerenciamento, apontamento ou intera&ccedil;&otilde;es complexas.<\/span><\/p><h2 class=\"wp-block-heading\" id=\"h-como-o-react-funciona\"><b>Como o React Funciona?<\/b><\/h2><p><span style=\"font-weight: 400\">Voc&ecirc; pode ficar surpreso ao saber que pode escrever <\/span><a href=\"https:\/\/www.hostinger.com\/br\/tutoriais\/como-adicionar-javascript-no-html\/\"><span style=\"font-weight: 400\">c&oacute;digos HTML no JavaScript<\/span><\/a><span style=\"font-weight: 400\">. Mas &eacute; exatamente assim que o React funciona.<\/span><\/p><p><span style=\"font-weight: 400\">Criar o representante de um node DOM pode ser feito atrav&eacute;s da fun&ccedil;&atilde;o <strong>Element<\/strong> no React. Um exemplo est&aacute; logo abaixo.<\/span><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">React.createElement(\"div\", { className: \"red\" }, \"Children Text\");\nReact.createElement(MyCounter, { count: 3 + 5 });<\/pre><p><span style=\"font-weight: 400\">Como voc&ecirc; pode ter percebido, a sintaxe do c&oacute;digo HTML acima &eacute; muito parecida com componentes XML. Por&eacute;m, ao inv&eacute;s de usar uma classe DOM tradicional, o React usa <\/span><b>className<\/b><span style=\"font-weight: 400\">. <\/span><\/p><p><span style=\"font-weight: 400\">Tags JSX tem um nome de tag, filhos e atributos. As aspas nos atributos JSX representam as strings (linhas). Esse elemento &eacute; similar ao JavaScript.<\/span><\/p><p><span style=\"font-weight: 400\">Al&eacute;m disso, os valores num&eacute;ricos e express&otilde;es devem ser escritos dentro do s&iacute;mbolo chaves <strong>{}<\/strong>.<\/span><\/p><p><span style=\"font-weight: 400\">O exemplo acima ilustra muito bem como &eacute; a sintaxe do React. E, como voc&ecirc; pode ver, a ferramenta usa uma extens&atilde;o JSX. basicamente, &eacute; uma combina&ccedil;&atilde;o de HTML e JavaScript.<\/span><\/p><p><span style=\"font-weight: 400\">Abaixo est&aacute; um exemplo de React escrito usando JSX.<\/span><\/p><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;div className=\"red\"&gt;Children Text&lt;\/div&gt;;\n&lt;MyCounter count={3 + 5} \/&gt;;\nvar GameScores = {player1: 2,player2: 5};\n&lt;DashboardUnit data-index=\"2\"&gt;\n&lt;h1&gt;Scores&lt;\/h1&gt;&lt;Scoreboard className=\"results\" scores={GameScores} \/&gt;\n&lt;\/DashboardUnit&gt;;<\/pre><p><span style=\"font-weight: 400\">Vamos dar uma olhada no que cada parte da tag HTML acima quer dizer:<\/span><\/p><ul class=\"wp-block-list\">\n<li><strong>&lt;MyCounter&gt;<\/strong> representa uma esp&eacute;cie de conta que, no caso, mostra um valor num&eacute;rico.<\/li>\n\n\n\n<li><strong>GameScores<\/strong> &eacute; um objeto literal que tem dois pares de valores independentes.<\/li>\n\n\n\n<li><strong>&lt;DashboardUnit&gt;<\/strong> &eacute; o bloco XML que &eacute; renderizado na p&aacute;gina.<\/li>\n\n\n\n<li><strong>scores={GameScores}<\/strong>: esses atributos recebem um valor do objeto GameScores que foi definido antes.<\/li>\n<\/ul><p><span style=\"font-weight: 400\">A maior parte do React &eacute; escrito em JSX (JavaScript XML) em vez de apenas usar o padr&atilde;o JS de escrita no JavaScript. Contudo, saiba que isso acontece apenas porque &eacute; mais f&aacute;cil de criar componentes React.<\/span><\/p><p><span style=\"font-weight: 400\">Voc&ecirc; pode criar um componente React com o JavaScript padr&atilde;o. Mas garantimos a voc&ecirc; que ser&aacute; um pouco mais trabalhoso e bagun&ccedil;ado.<\/span><\/p><p><span style=\"font-weight: 400\">Fora isso, a ideia por tr&aacute;s do uso do JSX no React &eacute; que o Facebook (o desenvolvedor inicial) queria fornecer um tipo de extens&atilde;o de sintaxe com uma configura&ccedil;&atilde;o limpa e sem ambiguidades aos desenvolvedores.<\/span><\/p><h2 class=\"wp-block-heading\" id=\"h-e-o-react-native\">E o React Native?<\/h2><p>O React Native &eacute; uma estrutura JavaScript de c&oacute;digo aberto constru&iacute;da na biblioteca React. Os desenvolvedores o utilizam para criar aplicativos React de plataforma cruzada para iOS e Android.<\/p><p>O React Native usa interfaces de programa&ccedil;&atilde;o de aplicativos (APIs) nativas para renderizar componentes de interface do usu&aacute;rio m&oacute;vel em Objective-C (iOS) ou Java (Android). Por causa disso, os desenvolvedores podem criar componentes espec&iacute;ficos da plataforma e compartilhar o c&oacute;digo-fonte em v&aacute;rias plataformas.<\/p><p>Apesar de ter semelhan&ccedil;as, o React Native &eacute; diferente do ReactJS. Aqui est&aacute; uma compara&ccedil;&atilde;o r&aacute;pida de React Native e ReactJS:<\/p><figure tabindex=\"0\" class=\"wp-block-table\"><table><tbody><tr><td><strong>ReactJS<\/strong><\/td><td><strong>React Native<\/strong><\/td><\/tr><tr><td>Uma biblioteca JavaScript.<\/td><td>Um framework JavaScript.<\/td><\/tr><tr><td>Ideal para construir aplica&ccedil;&otilde;es web din&acirc;micas.<\/td><td>D&aacute; uma sensa&ccedil;&atilde;o nativa &agrave; interface de usu&aacute;rio de aplicativos m&oacute;veis.<\/td><\/tr><tr><td>Usa o Virtual DOM para renderizar o c&oacute;digo do navegador.<\/td><td>Usa APIs nativas para renderizar c&oacute;digo em dispositivos m&oacute;veis.<\/td><\/tr><tr><td>Suporta CSS para criar anima&ccedil;&otilde;es.<\/td><td>Requer a <a href=\"https:\/\/reactnative.dev\/docs\/animations#animated-api\" target=\"_blank\" rel=\"noopener\">API Animated<\/a> para animar componentes.<\/td><\/tr><tr><td>Usa tags HTML.<\/td><td>N&atilde;o usa tags HTML devido &agrave; falta de suporte a DOM.<\/td><\/tr><tr><td>Usa CSS para estilizar.<\/td><td>Usa a folha de estilo JS para estilizar.<\/td><\/tr><\/tbody><\/table><\/figure><h2 class=\"wp-block-heading\" id=\"h-como-implementar-um-aplicativo-react-na-hostinger\">Como Implementar um Aplicativo React na Hostinger<\/h2><p>Para deixar sua aplica&ccedil;&atilde;o React acess&iacute;vel para usu&aacute;rios na internet, voc&ecirc; precisa fazer a implanta&ccedil;&atilde;o (<em>deployment<\/em>) em um servidor. Na Hostinger, d&aacute; para fazer isso de duas formas: usando nossa <strong>hospedagem para web apps front-end<\/strong> ou nossa <strong>solu&ccedil;&atilde;o de VPS<\/strong>.<\/p><p>Como a nossa <a href=\"\/br\/hospedagem-de-aplicacoes-web\">hospedagem para web apps<\/a> &eacute; gerenciada, ela &eacute; ideal se voc&ecirc; quer rodar aplica&ccedil;&otilde;es Node.js criadas com diferentes frameworks sem precisar configurar e administrar o servidor. Ela tamb&eacute;m oferece recursos como integra&ccedil;&atilde;o nativa com GitHub, firewall de aplica&ccedil;&otilde;es web e CDN, o que ajuda a simplificar ainda mais o processo de implanta&ccedil;&atilde;o.<\/p><p>J&aacute; o <a href=\"\/br\/servidor-vps\">Servidor VPS da Hostinger<\/a> &eacute; uma &oacute;tima op&ccedil;&atilde;o se voc&ecirc; busca flexibilidade, escalabilidade e mais liberdade de personaliza&ccedil;&atilde;o, j&aacute; que vem com hardware potente e acesso root completo. Como &eacute; uma solu&ccedil;&atilde;o autogerenciada, voc&ecirc; tamb&eacute;m conta com ferramentas como o <strong>Assistente de IA Kodee<\/strong> e o <strong>terminal no navegador<\/strong> para facilitar as tarefas de administra&ccedil;&atilde;o.<\/p><figure class=\"wp-block-image size-large\"><a href=\"\/br\/servidor-vps\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"1024\" height=\"300\" src=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-VPS-hosting_in-text-banner-1.png\/public\" alt=\"\" class=\"wp-image-32923\" srcset=\"https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-VPS-hosting_in-text-banner-1.png\/w=1024,fit=scale-down 1024w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-VPS-hosting_in-text-banner-1.png\/w=300,fit=scale-down 300w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-VPS-hosting_in-text-banner-1.png\/w=150,fit=scale-down 150w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-VPS-hosting_in-text-banner-1.png\/w=768,fit=scale-down 768w, https:\/\/imagedelivery.net\/LqiWLm-3MGbYHtFuUbcBtA\/wp-content\/uploads\/sites\/53\/2023\/02\/BR-VPS-hosting_in-text-banner-1.png\/w=1536,fit=scale-down 1536w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><p>Para implementar um aplicativo React na Hostinger, basta seguir estas etapas:<\/p><ol class=\"wp-block-list\">\n<li>Selecione um modelo VPS com sistema operacional <strong>Ubuntu 22.04 64 bits<\/strong>.<\/li>\n\n\n\n<li><strong>Usando SSH<\/strong>, conecte-se ao sistema operacional:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">ssh root@ip_do_seu_servidor\n<\/pre><ol start=\"3\" class=\"wp-block-list\">\n<li>Instale um servidor node.js e um servidor proxy reverso. Certifique-se de ter removido o Apache2:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo apt-get purge apache2*\n\ncurl -sL https:\/\/deb.nodesource.com\/setup_18.x -o nodesource_setup.sh\n\nsudo bash nodesource_setup.sh\n\nsudo apt update &amp;&amp; sudo apt upgrade -y\n\nsudo apt install -y nodejs nginx<\/pre><ol start=\"4\" class=\"wp-block-list\">\n<li>Para que seu aplicativo Next.js funcione corretamente, crie um novo arquivo de configura&ccedil;&atilde;o do Nginx:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo nano \/etc\/nginx\/sites-available\/nextjs\n<\/pre><ol start=\"5\" class=\"wp-block-list\">\n<li>Em seguida, cole esta configura&ccedil;&atilde;o no arquivo. Lembre-se de substituir ip_do_seu_servidor pelo seu endere&ccedil;o de IP do seu VPS ou seu nome de dom&iacute;nio, e ent&atilde;o salve suas altera&ccedil;&otilde;es quando terminar.<\/li>\n<\/ol><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">server {\n  listen 80;\n  server_name ip_do_seu_servidor;\n  location \/ {\n    proxy_pass http:\/\/localhost:3000;\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection 'upgrade';\n    proxy_set_header Host $host;\n    proxy_cache_bypass $http_upgrade;\n  }\n}<\/pre><ol start=\"6\" class=\"wp-block-list\">\n<li>Para habilitar a configura&ccedil;&atilde;o, voc&ecirc; precisa criar um link simb&oacute;lico:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo ln -s \/etc\/nginx\/sites-available\/nextjs \/etc\/nginx\/sites-enabled\/\n<\/pre><ol start=\"7\" class=\"wp-block-list\">\n<li>Reinicie o Nginx com este comando?<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">sudo service nginx restart\n<\/pre><ol start=\"8\" class=\"wp-block-list\">\n<li>Agora crie um novo aplicativo Next.js com os seguintes comandos:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">cd \/var\/www\n\nnpx create-next-app@latest nextjs<\/pre><ol start=\"9\" class=\"wp-block-list\">\n<li>V&aacute; para o diret&oacute;rio do aplicativo Next.js:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">cd nextjs\n<\/pre><ol start=\"10\" class=\"wp-block-list\">\n<li>Em seguida, instale as depend&ecirc;ncias do aplicativo:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">npm install<\/pre><ol start=\"11\" class=\"wp-block-list\">\n<li>Crie seu aplicativo Next.js com este comando:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">npm run build\n<\/pre><ol start=\"12\" class=\"wp-block-list\">\n<li>Quando terminar, inicie seu aplicativo Next.js com o seguinte prompt:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">npm start\n<\/pre><p>Seu aplicativo Next.js agora est&aacute; ativo e acess&iacute;vel por meio de seu nome de dom&iacute;nio ou endere&ccedil;o IP VPS.<\/p><p>Use um gerenciador de processos como o PM2 para reiniciar automaticamente seu aplicativo ap&oacute;s uma reinicializa&ccedil;&atilde;o do servidor ou uma falha. O PM2 tamb&eacute;m mant&eacute;m seu aplicativo Next.js em execu&ccedil;&atilde;o no plano de fundo do seu VPS. Instale o PM2 assim:<\/p><ol class=\"wp-block-list\">\n<li>Execute o seguinte comando no seu VPS:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">cd ~\n\nsudo npm install -g pm2<\/pre><ol start=\"2\" class=\"wp-block-list\">\n<li>Acesse o diret&oacute;rio do aplicativo Next.js:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">cd \/var\/www\/nextjs<\/pre><ol start=\"3\" class=\"wp-block-list\">\n<li>Use PM2 para iniciar seu aplicativo Next.js:<\/li>\n<\/ol><pre class=\"wp-block-preformatted\">pm2 start npm --name \"nextjs\" -- start\n<\/pre><p>Certifique-se de que o PM2 ser&aacute; iniciado no boot. Para isso, use o seguinte comando no seu terminal:<\/p><pre class=\"wp-block-preformatted\">pm2 startup\n<\/pre><p>Salve todos os processos PM2 atuais com este comando:<\/p><pre class=\"wp-block-preformatted\">pm2 save\n<\/pre><h2 class=\"wp-block-heading\" id=\"h-conclusao\"><b>Conclus&atilde;o<\/b><\/h2><p>O ReactJS &eacute; uma biblioteca JavaScript robusta usada no desenvolvimento din&acirc;mico de aplicativos da web. Ele torna a programa&ccedil;&atilde;o em JavaScript mais simples e melhora o desempenho e o SEO do seu aplicativo, entre outros benef&iacute;cios.<\/p><p>O ReactJS ajuda a simplificar o processo de depura&ccedil;&atilde;o e reduz o risco de erros ao utilizar uma vincula&ccedil;&atilde;o de dados unidirecional.<\/p><p>Aqui est&aacute; uma recapitula&ccedil;&atilde;o de por que voc&ecirc; pode querer usar o React:<\/p><ul class=\"wp-block-list\">\n<li>&Eacute; f&aacute;cil de usar e aprender, com muitas li&ccedil;&otilde;es de programa&ccedil;&atilde;o dispon&iacute;veis online.<\/li>\n\n\n\n<li>Ele suporta componentes reutiliz&aacute;veis, reduzindo o tempo de desenvolvimento.<\/li>\n\n\n\n<li>JSX torna mais f&aacute;cil codificar e renderizar elementos.<\/li>\n\n\n\n<li>O Virtual DOM elimina a re-renderiza&ccedil;&atilde;o excessiva, garantindo o alto desempenho do seu aplicativo.<\/li>\n\n\n\n<li>O React ajuda os mecanismos de pesquisa a rastrear seu aplicativo da web, melhorando seu SEO.<\/li>\n<\/ul><p>Esperamos que este artigo tenha ajudado voc&ecirc; a entender o React JS e suas fun&ccedil;&otilde;es no desenvolvimento web. Se voc&ecirc; tiver alguma observa&ccedil;&atilde;o ou pergunta, deixe-a na se&ccedil;&atilde;o de coment&aacute;rios abaixo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O ReactJS &eacute; uma das bibliotecas de JavaScript mais populares para desenvolvimento de aplicativos web ou para dispositivos m&oacute;veis. Criado pelo Facebook, o React cont&eacute;m uma cole&ccedil;&atilde;o de trechos de c&oacute;digo de JavaScript reutiliz&aacute;veis chamados componentes, usados para a constru&ccedil;&atilde;o da interface do usu&aacute;rio (UI). &Eacute; importante observar que o ReactJS n&atilde;o &eacute; um framework [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"\/br\/tutoriais\/o-que-e-react-javascript\">Read More&#8230;<\/a><\/p>\n","protected":false},"author":92,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rank_math_title":"","rank_math_description":"Aprenda o que \u00e9 React JavaScript e entenda como essa ferramenta pode otimizar e acelear seu processo de trabalho como desenvolvedor!","rank_math_focus_keyword":"o que \u00e9 react","footnotes":""},"categories":[5602],"tags":[4793,6570,6568,6569],"class_list":["post-15803","post","type-post","status-publish","format-standard","hentry","category-glossario","tag-javascript","tag-o-que-e-react","tag-react","tag-react-javascript"],"hreflangs":[{"locale":"en-US","link":"https:\/\/www.hostinger.com\/tutorials\/what-is-react","default":0},{"locale":"pt-BR","link":"https:\/\/www.hostinger.com\/br\/tutoriais\/o-que-e-react-javascript","default":0},{"locale":"fr-FR","link":"https:\/\/www.hostinger.com\/fr\/tutoriels\/quest-ce-que-react","default":0},{"locale":"es-ES","link":"https:\/\/www.hostinger.com\/es\/tutoriales\/que-es-react","default":0},{"locale":"id-ID","link":"https:\/\/www.hostinger.com\/id\/tutorial\/apa-itu-react","default":0},{"locale":"de-DE","link":"https:\/\/www.hostinger.com\/de\/tutorials\/was-ist-react","default":0},{"locale":"it-IT","link":"https:\/\/www.hostinger.com\/it\/tutorial\/cose-react","default":0},{"locale":"en-UK","link":"https:\/\/www.hostinger.com\/uk\/tutorials\/what-is-react","default":0},{"locale":"en-MY","link":"https:\/\/www.hostinger.com\/my\/tutorials\/what-is-react","default":0},{"locale":"en-PH","link":"https:\/\/www.hostinger.com\/ph\/tutorials\/what-is-react","default":0},{"locale":"es-MX","link":"https:\/\/www.hostinger.com\/mx\/tutoriales\/que-es-react","default":0},{"locale":"es-CO","link":"https:\/\/www.hostinger.com\/co\/tutoriales\/que-es-react","default":0},{"locale":"es-AR","link":"https:\/\/www.hostinger.com\/ar\/tutoriales\/que-es-react","default":0},{"locale":"pt-PT","link":"https:\/\/www.hostinger.com\/pt\/tutoriais\/o-que-e-react-javascript","default":0},{"locale":"en-IN","link":"https:\/\/www.hostinger.com\/in\/tutorials\/what-is-react","default":0},{"locale":"en-CA","link":"https:\/\/www.hostinger.com\/ca\/tutorials\/what-is-react","default":0},{"locale":"en-AU","link":"https:\/\/www.hostinger.com\/au\/tutorials\/what-is-react","default":0},{"locale":"en-NG","link":"https:\/\/www.hostinger.com\/ng\/tutorials\/what-is-react","default":0}],"acf":[],"_links":{"self":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/15803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/users\/92"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/comments?post=15803"}],"version-history":[{"count":9,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/15803\/revisions"}],"predecessor-version":[{"id":51457,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/posts\/15803\/revisions\/51457"}],"wp:attachment":[{"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/media?parent=15803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/categories?post=15803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hostinger.com\/br\/tutoriais\/wp-json\/wp\/v2\/tags?post=15803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}