{"componentChunkName":"component---src-templates-docs-js","path":"/docs/add-react-to-a-website.html","result":{"data":{"markdownRemark":{"html":"<p>Use o React o quanto precisar, sendo pouco ou muito.</p>\n<p>React foi projetado desde o início para adoção gradual e <strong>você pode usar o React o quanto precisar, sendo pouco ou muito</strong>. Talvez você só queira adicionar alguns “pontos de interatividade” a uma página existente. Os componentes React são uma ótima maneira de fazer isso.</p>\n<p>A grande maioria dos sites não são e não precisam ser, single-page apps. Você pode usar o React em uma pequena parte do seu site com <strong>poucas linhas de código e nenhuma ferramenta de build</strong>. Você também pode expandir gradualmente sua presença ou mantê-lo contido em alguns widgets dinâmicos.</p>\n<hr>\n<ul>\n<li><a href=\"#add-react-in-one-minute\">Adicione o React em Um Minuto</a></li>\n<li><a href=\"#optional-try-react-with-jsx\">Opcional: Experimente o React com JSX</a> (sem empacotador necessário!)</li>\n</ul>\n<h2 id=\"add-react-in-one-minute\"><a href=\"#add-react-in-one-minute\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Adicione o React em Um Minuto </h2>\n<p>Nesta seção, mostraremos como adicionar um componente React a uma página HTML existente. Você pode usar seu próprio site ou criar um arquivo HTML vazio para praticar.</p>\n<p>Não será necessário usar alguma ferramenta complicada ou instalar algo — <strong>para completar essa seção, você só precisa de uma conexão de internet e um minuto de seu tempo.</strong></p>\n<p>Opcional: <a href=\"https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605/archive/f6c882b6ae18bde42dcf6fdb751aae93495a2275.zip\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Faça o download do exemplo completo (2KB zipado)</a></p>\n<h3 id=\"step-1-add-a-dom-container-to-the-html\"><a href=\"#step-1-add-a-dom-container-to-the-html\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Passo 1: Adicionar um contêiner DOM ao HTML </h3>\n<p>Primeiramente, abra a página HTML que você deseja alterar. Adicione uma tag <code class=\"gatsby-code-text\">&lt;div&gt;</code> vazia para marcar o local onde você deseja exibir algo com o React. Por exemplo:</p>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"html\"><pre class=\"gatsby-code-html\"><code class=\"gatsby-code-html\"><span class=\"token comment\">&lt;!-- ... HTML existente ... --></span>\n\n<span class=\"gatsby-highlight-code-line\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>like_button_container<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span></span>\n<span class=\"token comment\">&lt;!-- ... HTML existente ... --></span></code></pre></div>\n<p>Nós atribuimos a esta <code class=\"gatsby-code-text\">&lt;div&gt;</code> um atributo HTML <code class=\"gatsby-code-text\">id</code> único. Isso nos permitirá encontrá-lo no código JavaScript e mais tarde exibir um componente React dentro dele.</p>\n<blockquote>\n<p>Dica</p>\n<p>Você pode colocar um “contêiner” como esta <code class=\"gatsby-code-text\">&lt;div&gt;</code> em <strong>qualquer lugar</strong> dentro da tag <code class=\"gatsby-code-text\">&lt;body&gt;</code>. Você pode ter vários contêineres DOM independentes em uma página. Eles geralmente são vazios — o React vai substituir qualquer conteúdo existente dentro deles.</p>\n</blockquote>\n<h3 id=\"step-2-add-the-script-tags\"><a href=\"#step-2-add-the-script-tags\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Passo 2: Adicionar as Tags Script </h3>\n<p>A seguir, adicione três tags <code class=\"gatsby-code-text\">&lt;script&gt;</code> em sua página HTML logo antes do fechamento da tag <code class=\"gatsby-code-text\">&lt;/body&gt;</code>:</p>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"html\"><pre class=\"gatsby-code-html\"><code class=\"gatsby-code-html\">  <span class=\"token comment\">&lt;!-- ... HTML qualquer ... --></span>\n\n  <span class=\"token comment\">&lt;!-- Adicionar o React. --></span>\n  <span class=\"token comment\">&lt;!-- Nota: ao fazer o deploy, substitua \"development.js\" por \"production.min.js\". --></span>\n<span class=\"gatsby-highlight-code-line\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react@17/umd/react.development.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">crossorigin</span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></span><span class=\"gatsby-highlight-code-line\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react-dom@17/umd/react-dom.development.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">crossorigin</span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></span>\n  <span class=\"token comment\">&lt;!-- Adicione nosso componente React. --></span>\n<span class=\"gatsby-highlight-code-line\">  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>like_button.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>body</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>As duas primeiras tags adicionam o React. A terceira irá adicionar o código de seu componente.</p>\n<h3 id=\"step-3-create-a-react-component\"><a href=\"#step-3-create-a-react-component\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Passo 3: Criar um Componente React </h3>\n<p>Crie um arquivo chamado <code class=\"gatsby-code-text\">like_button.js</code> próximo a sua página HTML.</p>\n<p>Abra <strong><a href=\"https://gist.github.com/gaearon/0b180827c190fe4fd98b4c7f570ea4a8/raw/b9157ce933c79a4559d2aa9ff3372668cce48de7/LikeButton.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">este código inicial</a></strong> e copie o conteúdo no arquivo que você criou.</p>\n<blockquote>\n<p>Dica</p>\n<p>Esse código define um componente React chamado <code class=\"gatsby-code-text\">LikeButton</code>. Não se preocupe se você ainda não entendeu — mais tarde vamos cobrir os blocos de construção do React em nosso <a href=\"/tutorial/tutorial.html\">tutorial</a> e em nosso <a href=\"/docs/hello-world.html\">guia dos conceitos principais</a>. Por enquanto, vamos apenas fazer funcionar!</p>\n</blockquote>\n<p>Depois <strong><a href=\"https://gist.github.com/gaearon/0b180827c190fe4fd98b4c7f570ea4a8/raw/b9157ce933c79a4559d2aa9ff3372668cce48de7/LikeButton.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">do código inicial</a></strong>, adicione essas duas linhas no final do arquivo <code class=\"gatsby-code-text\">like_button.js</code>:</p>\n<div class=\"gatsby-highlight has-highlighted-lines\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// ... o código inicial que você copiou ...</span>\n\n<span class=\"gatsby-highlight-code-line\"><span class=\"token keyword\">const</span> domContainer <span class=\"token operator\">=</span> document<span class=\"token punctuation\">.</span><span class=\"token function\">querySelector</span><span class=\"token punctuation\">(</span><span class=\"token string\">'#like_button_container'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span><span class=\"gatsby-highlight-code-line\">ReactDOM<span class=\"token punctuation\">.</span><span class=\"token function\">render</span><span class=\"token punctuation\">(</span><span class=\"token function\">e</span><span class=\"token punctuation\">(</span>LikeButton<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> domContainer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></span></code></pre></div>\n<p>Essas duas linhas de código encontram a <code class=\"gatsby-code-text\">&lt;div&gt;</code> que adicionamos em nosso HTML no primeiro passo e então mostrará o componente React dentro dele.</p>\n<h3 id=\"thats-it\"><a href=\"#thats-it\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>É Isso Aí! </h3>\n<p>Não existe quarto passo. <strong>Você acabou de adicionar seu primeiro componente React ao seu site.</strong></p>\n<p>Confira nas próximas seções para mais dicas de como integrar o React.</p>\n<p><strong><a href=\"https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Veja o código fonte completo do exemplo</a></strong></p>\n<p><strong><a href=\"https://gist.github.com/gaearon/6668a1f6986742109c00a581ce704605/archive/f6c882b6ae18bde42dcf6fdb751aae93495a2275.zip\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Faça o download do exemplo completo (2KB zipado)</a></strong></p>\n<h3 id=\"tip-reuse-a-component\"><a href=\"#tip-reuse-a-component\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Dica: Reutilize um Componente </h3>\n<p>Normalmente, você pode querer exibir seus componentes React em vários lugares em sua página HTML. Aqui está um exemplo que exibe o botão “Like” três vezes e passa alguns dados para ele:</p>\n<p><a href=\"https://gist.github.com/gaearon/faa67b76a6c47adbab04f739cba7ceda\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Veja o código fonte completo do exemplo</a></p>\n<p><a href=\"https://gist.github.com/gaearon/faa67b76a6c47adbab04f739cba7ceda/archive/9d0dd0ee941fea05fd1357502e5aa348abb84c12.zip\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Faça o download do exemplo completo (2KB zipado)</a></p>\n<blockquote>\n<p>Nota</p>\n<p>Essa estratégia é mais útil quando as partes da página com React estão isoladas uma das outras. Dentro do código do React, é mais fácil de usar <a href=\"/docs/components-and-props.html#composing-components\">composição de componentes</a>.</p>\n</blockquote>\n<h3 id=\"tip-minify-javascript-for-production\"><a href=\"#tip-minify-javascript-for-production\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Dica: Minifique o JavaScript para Produção </h3>\n<p>Antes de realizar o deploy de seu site para produção, lembre-se que o código JavaScript não minificado pode deixar sua página significamente mais lenta para seus usuários.</p>\n<p>Se você já minifica os scripts da sua aplicação, <strong>seu site estará pronto para produção</strong> se você garantir que o HTML carregue a versão do React terminando em <code class=\"gatsby-code-text\">production.min.js</code>:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react@17/umd/react.production.min.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">crossorigin</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/react-dom@17/umd/react-dom.production.min.js<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">crossorigin</span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Se você não possui uma etapa de minificação para seus scripts, <a href=\"https://gist.github.com/gaearon/42a2ffa41b8319948f9be4076286e1f3\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">aqui está um jeito de configurá-lo</a>.</p>\n<h2 id=\"optional-try-react-with-jsx\"><a href=\"#optional-try-react-with-jsx\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Opcional: Experimente o React com JSX </h2>\n<p>Nos exemplos acima, nós contamos apenas com recursos que são nativamentes suportados pelos navegadores. E é por isso que usamos uma chamada de função JavaScript para informar ao React o que exibir:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token keyword\">const</span> e <span class=\"token operator\">=</span> React<span class=\"token punctuation\">.</span>createElement<span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// Exibe um \"Like\" &lt;button></span>\n<span class=\"token keyword\">return</span> <span class=\"token function\">e</span><span class=\"token punctuation\">(</span>\n  <span class=\"token string\">'button'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">{</span> <span class=\"token function-variable function\">onClick</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">setState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> liked<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">'Like'</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Portanto, o React também oferece a opção de usar o <a href=\"/docs/introducing-jsx.html\">JSX</a> como alternativa:</p>\n<div class=\"gatsby-highlight\" data-language=\"jsx\"><pre class=\"gatsby-code-jsx\"><code class=\"gatsby-code-jsx\"><span class=\"token comment\">// Exibe um \"Like\" &lt;button></span>\n<span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>button</span> <span class=\"token attr-name\">onClick</span><span class=\"token script language-javascript\"><span class=\"token script-punctuation punctuation\">=</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">setState</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> liked<span class=\"token operator\">:</span> <span class=\"token boolean\">true</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span></span><span class=\"token punctuation\">></span></span><span class=\"token plain-text\">\n    Like\n  </span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>button</span><span class=\"token punctuation\">></span></span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Esses dois blocos de código são equivalentes. Enquanto o <strong>JSX é <a href=\"/docs/react-without-jsx.html\">completamente opcional</a></strong>, muitas pessoas acham útil para escrever código de UI — junto com React e com outras bibliotecas.</p>\n<p>Você pode testar com JSX usando <a href=\"https://babeljs.io/en/repl#?babili=false&#x26;browsers=&#x26;build=&#x26;builtIns=false&#x26;spec=false&#x26;loose=false&#x26;code_lz=DwIwrgLhD2B2AEcDCAbAlgYwNYF4DeAFAJTw4B88EAFmgM4B0tAphAMoQCGETBe86WJgBMAXJQBOYJvAC-RGWQBQ8FfAAyaQYuAB6cFDhkgA&#x26;debug=false&#x26;forceAllTransforms=false&#x26;shippedProposals=false&#x26;circleciRepo=&#x26;evaluate=false&#x26;fileSize=false&#x26;timeTravel=false&#x26;sourceType=module&#x26;lineWrap=true&#x26;presets=es2015%2Creact%2Cstage-2&#x26;prettier=false&#x26;targets=&#x26;version=7.4.3\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">esse conversor online</a>.</p>\n<h3 id=\"quickly-try-jsx\"><a href=\"#quickly-try-jsx\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Experimente Rapidamente JSX </h3>\n<p>A maneira mais rápida de experimentar o JSX em seu projeto é adicionando essa tag <code class=\"gatsby-code-text\">&lt;script&gt;</code> em sua página:</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"gatsby-code-html\"><code class=\"gatsby-code-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>https://unpkg.com/babel-standalone@6/babel.min.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>Agora você pode usar o JSX em qualquer tag <code class=\"gatsby-code-text\">&lt;script&gt;</code> somente adicionando o atributo <code class=\"gatsby-code-text\">type=&quot;text/babel&quot;</code> a ele. Aqui está <a href=\"https://raw.githubusercontent.com/reactjs/reactjs.org/master/static/html/single-file-example.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">um exemplo de arquivo HTML com JSX</a> em que você pode efetuar o download e testar.</p>\n<p>Essa abordagem é boa para aprender e criar demostrações simples. Portanto, o site fica lento e <strong>não fica adequado para produção</strong>. Quando você estiver pronto para seguir em frente, remova essa nova tag <code class=\"gatsby-code-text\">&lt;script&gt;</code> e os atributos <code class=\"gatsby-code-text\">type=&quot;text/babel&quot;</code> que você adicionou. Em vez disso, na seção a seguir você ira configurar um pré-processador JSX para converter todas suas tags <code class=\"gatsby-code-text\">&lt;script&gt;</code> automaticamente.</p>\n<h3 id=\"add-jsx-to-a-project\"><a href=\"#add-jsx-to-a-project\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Adicionar JSX a um Projeto </h3>\n<p>Adicionar JSX a um projeto não requer ferramentas complicadas, como um empacotador ou um servidor de desenvolvimento. Basicamente, adicionar JSX <strong>é como adicionar um pré-processador CSS.</strong> O único requisito é possuir o <a href=\"https://nodejs.org/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Node.js</a> instalado em seu computador.</p>\n<p>No terminal, vá até a pasta do seu projeto e cole esses dois comandos:</p>\n<ol>\n<li><strong>Passo 1:</strong> Execute <code class=\"gatsby-code-text\">npm init -y</code> (se falhar, <a href=\"https://gist.github.com/gaearon/246f6380610e262f8a648e3e51cad40d\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">aqui está uma correção</a>)</li>\n<li><strong>Passo 2:</strong> Execute <code class=\"gatsby-code-text\">npm install babel-cli@6 babel-preset-react-app@3</code></li>\n</ol>\n<blockquote>\n<p>Dica</p>\n<p>Estamos <strong>usando npm aqui somente para instalar o pré-processador do JSX;</strong> você não precisará dele para mais nada. Tanto o React quanto o código da aplicação pode continuar sem mudanças nas tags <code class=\"gatsby-code-text\">&lt;script&gt;</code>.</p>\n</blockquote>\n<p>Parabéns! Você acabou de adicionar uma <strong>configuração JSX pronta para produção</strong> em seu projeto.</p>\n<h3 id=\"run-jsx-preprocessor\"><a href=\"#run-jsx-preprocessor\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Execute o Pré-processador JSX </h3>\n<p>Crie uma pasta chamada <code class=\"gatsby-code-text\">src</code> e execute no terminal esse comando:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"gatsby-code-text\"><code class=\"gatsby-code-text\">npx babel --watch src --out-dir . --presets react-app/prod</code></pre></div>\n<blockquote>\n<p>Nota</p>\n<p><code class=\"gatsby-code-text\">npx</code> não é um erro de digitação — <a href=\"https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">é uma ferramenta de executar pacotes que vem com npm 5.2+</a>.</p>\n<p>Se você ver uma mensagem de erro dizendo “You have mistakenly installed the <code class=\"gatsby-code-text\">babel</code> package”, você pode ter perdido <a href=\"#add-jsx-to-a-project\">o passo anterior</a>. Execute o passo anterior na mesma pasta e tente novamente.</p>\n</blockquote>\n<p>Não espere o comando finalizar — esse comando inicia um watcher automatizado para o JSX.</p>\n<p>Se você criar um arquivo chamado <code class=\"gatsby-code-text\">src/like_button.js</code> com esse <strong><a href=\"https://gist.github.com/gaearon/c8e112dc74ac44aac4f673f2c39d19d1/raw/09b951c86c1bf1116af741fa4664511f2f179f0a/like_button.js\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">este código JSX inicial</a></strong>, o watcher criará um <code class=\"gatsby-code-text\">like_button.js</code> pré-processado com o código JavaScript adequado para o navegador. Quando você edita o arquivo com JSX, a transpilação será executada automaticamente.</p>\n<p>Como um bônus, isso também permite que você use recursos modernos do JavaScript, como classes, sem se preocupar com a incompatibilidade de navegadores antigos. A ferramenta que acabamos de usar é chamada de Babel e você pode aprender mais sobre ele <a href=\"https://babeljs.io/docs/en/babel-cli/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">em sua documentação</a>.</p>\n<p>Se você se sentir confortável com ferramentas de build e deseja que eles façam mais por você, <a href=\"/docs/create-a-new-react-app.html\">a próxima seção</a> descreve alguma das mais populares e acessíveis ferramentas. Caso contrário, essas tags scripts funcionarão perfeitamente.</p>","frontmatter":{"title":"Adicione o React a um site","next":"create-a-new-react-app.html","prev":"getting-started.html"},"fields":{"path":"content/docs/add-react-to-a-website.md","slug":"docs/add-react-to-a-website.html"}}},"pageContext":{"slug":"docs/add-react-to-a-website.html"}},"staticQueryHashes":[]}