<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Cristian Melo</title>
    <description>The latest articles on DEV Community by Cristian Melo (@cristianmeelo).</description>
    <link>https://dev.to/cristianmeelo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1168526%2F73d84da6-946f-4f0e-b6fd-e441c641e010.jpg</url>
      <title>DEV Community: Cristian Melo</title>
      <link>https://dev.to/cristianmeelo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cristianmeelo"/>
    <language>en</language>
    <item>
      <title>CSS2️⃣ 🥊 CSS3️⃣ - Não trave na entrevista técnica</title>
      <dc:creator>Cristian Melo</dc:creator>
      <pubDate>Mon, 30 Oct 2023 20:10:18 +0000</pubDate>
      <link>https://dev.to/cristianmeelo/css2-css3-nao-trave-na-entrevista-tecnica-11b5</link>
      <guid>https://dev.to/cristianmeelo/css2-css3-nao-trave-na-entrevista-tecnica-11b5</guid>
      <description>&lt;p&gt;Essa vai para os mais jovens no universo da tecnologia. Você já parou para pensar, se naquela entrevista de emprego te perguntarem a diferença entre CSS2 e CSS3?&lt;/p&gt;




&lt;p&gt;Acompanha esse post pra não faltar o palavriado na hora 💡&lt;/p&gt;




&lt;p&gt;Aqui estão algumas das diferenças mais significativas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Seletores avançados:&lt;/strong&gt; O CSS3 introduz uma variedade de seletores avançados que permitem direcionar elementos de maneira mais precisa. Isso inclui seletores como o seletor de atributo, o seletor de primeira criança, o seletor de última criança, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bordas e sombras avançadas:&lt;/strong&gt; O CSS3 permite criar bordas arredondadas, sombras suaves e bordas gradientes de maneira mais eficiente e flexível do que o CSS2.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Animações e transformações:&lt;/strong&gt; O CSS3 oferece suporte a animações e transformações CSS, permitindo que elementos HTML sejam animados e transformados sem a necessidade de JavaScript.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fontes personalizadas:&lt;/strong&gt; Com o CSS3, você pode usar a propriedade @font-face para incorporar fontes personalizadas em seu site, ampliando suas opções de design de fontes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mídia responsiva:&lt;/strong&gt; O CSS3 introduz media queries, que permitem que você crie estilos específicos para diferentes tamanhos de tela e dispositivos, tornando seu site mais responsivo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Flexbox e Grid:&lt;/strong&gt; O CSS3 introduz os modelos de layout flexbox e grid, que tornam o design de layout mais flexível e eficiente.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gradientes CSS:&lt;/strong&gt; O CSS3 oferece suporte a gradientes CSS, permitindo criar fundos gradientes diretamente com CSS, em vez de depender de imagens.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Transições:&lt;/strong&gt; O CSS3 inclui transições, que permitem suavizar as mudanças de estilo de um elemento ao longo do tempo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-colunas:&lt;/strong&gt; O CSS3 permite criar layouts de várias colunas de maneira mais eficaz.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sombra de texto:&lt;/strong&gt; O CSS3 permite aplicar sombras a texto diretamente, sem a necessidade de imagens.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Lançada em 2012, o CSS3 é a mais recente versão do CSS e trouxe a grande maioria das novidades utilizadas hoje quando o assunto é estilização de páginas da web.&lt;/p&gt;

&lt;p&gt;Anteriores a ela, estão o CSS2 e o CSS, que surgiram, respectivamente, em 1998 e 1996.&lt;/p&gt;

&lt;p&gt;O CSS3 trouxe &lt;strong&gt;MUITOS&lt;/strong&gt; recursos avançados para melhorar o design e a funcionalidade de páginas da web,(nem consigo imaginar mais o mundo sem elas), tornando-as mais dinâmicas, responsivas e atraentes. &lt;/p&gt;

&lt;p&gt;Ah, é importante observar que a implementação de alguns recursos pode variar entre navegadores, o que pode requerer o uso de prefixos de fornecedores e considerações de compatibilidade. &lt;/p&gt;




&lt;p&gt;Finalizamos nosso post , mas antes de ir, se gostou e fez sentido, não se esqueça de reagir e comentar, isso me motiva muito!&lt;/p&gt;

&lt;p&gt;💻 GitHub: cristianmeelo&lt;br&gt;
💼 LinkedIn: Cristian Melo&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>css</category>
    </item>
    <item>
      <title>&lt;&gt; Assim &lt;/&gt; ou &lt;div&gt; Assado &lt;/div&gt; ⚛️</title>
      <dc:creator>Cristian Melo</dc:creator>
      <pubDate>Fri, 27 Oct 2023 16:11:33 +0000</pubDate>
      <link>https://dev.to/cristianmeelo/-assim-ou-assado-27d3</link>
      <guid>https://dev.to/cristianmeelo/-assim-ou-assado-27d3</guid>
      <description>&lt;p&gt;Fala galeres ! Biene? Bora de conteúdo referente a &lt;em&gt;performance em React&lt;/em&gt; 😌&lt;/p&gt;




&lt;p&gt;Já sabemos, se não sabemos vamos sabemos agora, que para renderizarmos um componente ou múltiplos componentes no React JSX/TSX, precisamos englobá-los dentro de um &lt;strong&gt;único&lt;/strong&gt; "invólucro".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rAlx8uC5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qkoxhpeoh99fz6n5kxk3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rAlx8uC5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qkoxhpeoh99fz6n5kxk3.png" alt="Code lines" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Renderização Funcionando 👍&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CvT3v8pv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/is6n0udzginsrnl7vr0q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CvT3v8pv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/is6n0udzginsrnl7vr0q.png" alt="Code lines" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Renderização com Erro 👎&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sabendo dessas nossas premissas iniciais, vamos às abordagens em questão.&lt;/p&gt;

&lt;h2&gt;
  
  
  &amp;lt;&amp;gt; &amp;lt;/&amp;gt;
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;Fragment&amp;gt;&lt;/code&gt;, comumante empregado com sintaxe &amp;lt;&amp;gt; &amp;lt;/&amp;gt; , permite tu agrupar vários componentes em um &lt;em&gt;render&lt;/em&gt; sem criar um nó extra, de acordo com nossoa &lt;a href="https://react.dev/reference/react/Fragment"&gt;documentação fresquinha&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ntvtMu7p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wr5t0cf3anz8xglg849j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ntvtMu7p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wr5t0cf3anz8xglg849j.png" alt="Code lines" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do outro lado do ringue, temos a tag &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; , oriunda do html e frequentemente usado para agrupar elementos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nhCXuKHk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n05vaz28uxovsxkm9m92.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nhCXuKHk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n05vaz28uxovsxkm9m92.png" alt="Code lines" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤼‍♀️ Em geral, usar React Fragments pode levar a um melhor desempenho, acompanhe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Velocidade&lt;br&gt;
O elemento &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; cria um nó na DOM e ocupa um certo espaço, mas o &lt;code&gt;&amp;lt;Fragment&amp;gt;&lt;/code&gt; nunca cria um nó na DOM e não ocupa espaço, o que torna o aplicativo um pouco mais rápido. &lt;strong&gt;Fragment&lt;/strong&gt;➕1️⃣&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DOM menos confusa&lt;br&gt;
Ter várias &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; aninhadas faz a DOM se tornar maior e mais difícil de interpretar a leitura, com &lt;code&gt;&amp;lt;Fragment&amp;gt;&lt;/code&gt;, essa leitura se torna um facilitada para interpretar e debugar.&lt;br&gt;
&lt;strong&gt;Fragment&lt;/strong&gt;➕1️⃣&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Estilização&lt;br&gt;
Com o container principal sendo um fragmento, não é possível fazer sua estilização, então avalie sua usabilidade.&lt;br&gt;
&lt;strong&gt;Div&lt;/strong&gt;➕1️⃣&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Finalizamos nosso post , mas antes de ir, o código está &lt;a href="https://stackblitz.com/edit/react-ts-49xpds?file=App.tsx"&gt;aqui&lt;/a&gt;, e se gostou e fez sentido, não se esqueça de reagir e comentar, isso me motiva muito!&lt;/p&gt;

&lt;p&gt;💻 GitHub: &lt;a href="https://github.com/cristianmeelo"&gt;cristianmeelo&lt;/a&gt;&lt;br&gt;
💼 LinkedIn: &lt;a href="https://www.linkedin.com/in/cristian-melo/"&gt;Cristian Melo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactjsdevelopment</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Como Pegar Valor Dinamicamente de Input no React ⚛️</title>
      <dc:creator>Cristian Melo</dc:creator>
      <pubDate>Fri, 27 Oct 2023 15:27:52 +0000</pubDate>
      <link>https://dev.to/cristianmeelo/como-pegar-valor-dinamicamente-de-input-no-react-15ge</link>
      <guid>https://dev.to/cristianmeelo/como-pegar-valor-dinamicamente-de-input-no-react-15ge</guid>
      <description>&lt;p&gt;Beeem vindes ao meu primeiro post!!! Queria dizer para vocês que estou muito empolgado para compartilhar ideias bacanas, ou até mesmo maturar o básico através da escrita. &lt;em&gt;Ok, Mas Cristian, seu primeiro post vai ser desse conteúdo simplão ?! — Sim.&lt;/em&gt; 💋💋&lt;/p&gt;

&lt;p&gt;Sem mais delongas e explicações desnecessárias, bora de conteúdo.&lt;/p&gt;




&lt;h2&gt;
  
  
  Input Básico de Texto
&lt;/h2&gt;

&lt;p&gt;Geralmente a aplicação de input faz sentido em formulários, pois bem, vamos começar olhando a declaração de input básico do nosso querido HTML.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RhyJhEYs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ry4922a4zvn2e0scivhu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RhyJhEYs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ry4922a4zvn2e0scivhu.png" alt="Code lines" width="800" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Armazenando Valor do Input de Texto
&lt;/h2&gt;

&lt;p&gt;Quando estamos lidando com componentes, toda a informação é guardada no estado do componente. Podemos usar o ilustríssimo hook &lt;code&gt;useState&lt;/code&gt; para acompanhar cada valor de entrada.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--G2locY2a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fcqjhcl00rckbl9l2bzw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--G2locY2a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fcqjhcl00rckbl9l2bzw.png" alt="Code lines" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Chegando à magia &lt;em&gt;Reactlista&lt;/em&gt;, vamos gerenciar o valor do input adicionando o atributo value ao nosso componente e linkando com a nossa variável &lt;code&gt;inputValue&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2YAzJATw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/exgus08wz8c2pjqzujza.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2YAzJATw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/exgus08wz8c2pjqzujza.png" alt="Code lines" width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O valor inicial do input é definido pelo estado do componente &lt;code&gt;inputValue&lt;/code&gt;, que por sua vez, é gerenciado pelo hook &lt;code&gt;useState&lt;/code&gt; &lt;em&gt;— Show ! Só copiar e colar ?! NOP&lt;/em&gt;. Ao rodar no StackBlitz da vida, já temos a saudosa mensagem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Warning: You provided a &lt;code&gt;value&lt;/code&gt; prop to a form field without an &lt;code&gt;onChange&lt;/code&gt; handler. This will render a read-only field. If the field should be mutable use &lt;code&gt;defaultValue&lt;/code&gt;. Otherwise, set either &lt;code&gt;onChange&lt;/code&gt; or &lt;code&gt;readOnly&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Que interessante né, se a gente quiser ter um componente &lt;strong&gt;mu-tá-vel&lt;/strong&gt;, temos que usar concomitante o atributo &lt;code&gt;onChange&lt;/code&gt;, do contrário, deveríamos ter declarado &lt;code&gt;defaultValue&lt;/code&gt; para termos o componente apenas como um campo de leitura. Ou seja, o próprio console avisa sobre as 💩 que estamos fazendo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verificando a dinaminicidade do Input de Texto
&lt;/h2&gt;

&lt;p&gt;Vamos adicionar o atributo &lt;code&gt;onChange&lt;/code&gt; no nosso componente chamando a função &lt;code&gt;handleChange&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--88GJkJU3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n8q98s47m5whde01p2t3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--88GJkJU3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n8q98s47m5whde01p2t3.png" alt="Code lines" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Now&lt;/em&gt;, vamos criar a função &lt;code&gt;handleChange&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qHTCsBuO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/47rahmt7kj7b3x4mzbpv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qHTCsBuO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/47rahmt7kj7b3x4mzbpv.png" alt="Code lines" width="800" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando o usuário altera o valor do input, o evento &lt;code&gt;onChange&lt;/code&gt; é disparado e chama a função &lt;code&gt;handleChange&lt;/code&gt;, que atualiza o estado do componente com o novo valor do input. Dessa forma, o valor do input sempre estará sincronizado com o estado do componente! 💥&lt;/p&gt;




&lt;p&gt;Finalizamos nosso post , mas antes de ir, o código está &lt;a href="https://stackblitz.com/edit/react-ts-z67kkc?file=index.tsx"&gt;aqui&lt;/a&gt;, e se gostou e fez sentido, não se esqueça de reagir e comentar, isso me motiva muito!&lt;/p&gt;

&lt;p&gt;💻 GitHub: &lt;a href="https://github.com/cristianmeelo"&gt;cristianmeelo&lt;/a&gt;&lt;br&gt;
💼 LinkedIn: &lt;a href="https://www.linkedin.com/in/cristian-melo/"&gt;Cristian Melo&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactjsdevelopment</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
