Digamos que você queira desejar boas-vindas a várias pessoas diferentes, mostrando o nome de cada uma delas na tela. Você precisa criar um componente para cada pessoa? Não! Aqui veremos outra magia do React: as props, ou propriedades. Podemos passar informações para os componentes, que serão utilizadas dentro deles. Essas propriedades podem ser dados, funções, objetos ou qualquer outra coisa. Para utilizá-las, passamos a informação da mesma forma que fazemos com tags HTML, como por exemplo a tag <a>, quando passamos o href para onde queremos direcionar.
import React from'react'; interfaceBoasVindasProps { //criamos uma interface para dizer o tipo dos dados que nome:string; //estamos esperando} functionBoasVindas(props:BoasVindasProps) { // Define o componente Apresentacao return ( <h3>Olá, seja bem vindo {props.nome}!</h3> // Utilizando as props ) } exportdefault BoasVindas;
Para utilizá-lo, fazemos o seguinte em App.tsx:
import React from'react'; import'./App.css'; // Importa o componente que criamos de seu diretório import Apresentacao from'./components/Apresentacao/Apresentacao'; import BoasVindas from'./components/BoasVindas/BoasVindas'; functionApp() { return ( <divclassName="App"> <Apresentacao /> <BoasVindasnome="Miguel"/> { /* Componente com props */ } </div> ); } exportdefault App;
Resultado:
Como estamos utilizando componentes, podemos sempre reutilizá-los:
import React from'react'; import'./App.css'; // Importa o componente que criamos de seu diretório import Apresentacao from'./components/Apresentacao/Apresentacao'; import BoasVindas from'./components/BoasVindas/BoasVindas'; functionApp() { return ( <divclassName="App"> <Apresentacao /> <BoasVindasnome="Miguel"/> <BoasVindasnome="Larissa"/> <BoasVindasnome="Codelab"/> <BoasVindasnome="Gotenery"/> <BoasVindasnome="Shogo"/> <BoasVindasnome="Calleri"/> </div> ); } exportdefault App;
Supondo agora que tenhamos muitos nomes para mostrar. Ficar copiando e colando os elementos vai deixar o código feio e nada agradável (como o exemplo acima deixa bem claro). Para contornar esse problema, podemos utilizar a função map(), da seguinte forma: