<?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: Raphael Viana</title>
    <description>The latest articles on DEV Community by Raphael Viana (@rnvdev).</description>
    <link>https://dev.to/rnvdev</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%2F63105%2Fcceea8a1-de8d-4711-988d-3077b9417ec7.jpg</url>
      <title>DEV Community: Raphael Viana</title>
      <link>https://dev.to/rnvdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rnvdev"/>
    <language>en</language>
    <item>
      <title>Onde fica o prop-types do React?</title>
      <dc:creator>Raphael Viana</dc:creator>
      <pubDate>Fri, 10 Jul 2020 21:12:45 +0000</pubDate>
      <link>https://dev.to/rnvdev/onde-fica-o-prop-types-do-react-29b0</link>
      <guid>https://dev.to/rnvdev/onde-fica-o-prop-types-do-react-29b0</guid>
      <description>&lt;p&gt;A inspiração para esse artigo veio de algumas perguntas que encontrei pela internet sobre as 'mágicas' que percebemos no React durante o desenvolvimento.&lt;/p&gt;

&lt;p&gt;Inclusive essa pergunta foi feita em um tutorial que eu mostrava a criação de um componente. Pode parecer básico esse questionamento, &lt;br&gt;
na verdade muitos questionamentos são básico enquando são fermentados em nossa mente, na hora de explicar nem sempre é tão intuitivo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que é esse prop-types?&lt;/strong&gt;&lt;br&gt;
O nome é bem sugestivo depois de uma análise, podemos extrair do &lt;em&gt;prop&lt;/em&gt; propriedade e do &lt;em&gt;type&lt;/em&gt; a palavra tipo. Acredite, já foi meio caminho andado!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Onde ele mora?&lt;/strong&gt;&lt;br&gt;
Quando usamos o comando: &lt;em&gt;npx create-react-app filename&lt;/em&gt;, para criar nossa estrutura inicial do nosso projeto, os scripts internos do React se encarregam de buscar lá no &lt;strong&gt;NPM&lt;/strong&gt; &lt;em&gt;(Node Package Manager)&lt;/em&gt; esse pacote chamado &lt;em&gt;prop-types&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O prop-types no nosso projeto:&lt;/strong&gt;&lt;br&gt;
Depois que o React, de forma automática, baixa suas dependências, dentre elas o &lt;em&gt;prop-types&lt;/em&gt;, ele é registrado em dois arquivos:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;(1)&lt;/strong&gt; Na pasta &lt;strong&gt;node_modules/prop-types&lt;/strong&gt;, nessa pasta temos de fato o módulo (código).&lt;br&gt;
&lt;strong&gt;(2)&lt;/strong&gt; Outro local é no &lt;strong&gt;package-lock.json&lt;/strong&gt;, onde podemos ver o endereço do repositório &lt;strong&gt;@types&lt;/strong&gt; (arquivo de definição de tipos)&lt;/p&gt;

&lt;p&gt;Se você colocar o endeço abaixo na sua barra de buscas: &lt;a href="https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz"&gt;https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz&lt;/a&gt; , você vai baixar o pacote de definição de tipos automaticamente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pra que serve?&lt;/strong&gt;&lt;br&gt;
Se você já usou ou sabe pra quer serve o &lt;strong&gt;TypeScript&lt;/strong&gt; e o &lt;strong&gt;Flow&lt;/strong&gt; (dentre outras soluções) é fácil entender pra que serve o &lt;em&gt;prop-types&lt;/em&gt;. Serve para você ter o controle do tipo das suas variáveis. Mas o benefício não é só esse, o &lt;em&gt;prop-types&lt;/em&gt; assim como o TypeScript (inclusive, recomendo usa-lo e o próprio Facebook também recomenda).&lt;/p&gt;

&lt;p&gt;(1) Pra usar, precisamos importar no nosso componente:&lt;br&gt;
&lt;strong&gt;&lt;em&gt;import PropTypes from 'prop-types';&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;(2) Depois que declaramos a nossa importação, podemos fazer uso do seus benefícios.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UserItem.propTypes = {
     user: PropTypes.object.isRequired
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No trecho acima, temos um componente chamado UserItem, 'conectamos' ao nosso propTypes e dentro, no corpo do objeto, passamos qual variável queremos controlar, no caso a variável user que vai ser do tipo objeto e é obrigatória.&lt;/p&gt;

&lt;p&gt;Como você pode imaginar, esse exemplo pode se extender pra outros tipos de variáveis e obrigatoriedades.&lt;/p&gt;

&lt;p&gt;Think, code and share!&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
