En React-komponent liknar mycket en vanlig funktion och på samma sätt som en funktion tar emot argument / parametrar kan man skicka data till en React-komponent med hjälp av props
//Komponentfunktionen tar emot props
const BildKomponent = (props) => <img src={props.imageUrl} />
<!-- Man skickar in props genom att lägga till attribut i komponenttaggen -->
<BildKomponent imageUrl="bild.png" />
Implementation
<Title text="Kaffeappen V2">
Resulterad HTML
<h1>Kaffeappen V2</h1>
const KomponentMedOlikaProps = (props) => {
console.log(props.enText, props.ettNummer, props.enLista, props.ettObjekt);
props.enFunktion(); //Funktionen kan man anropa
return (<p>Jag har många props men visar inte upp nån av dem</p>)
}
<KomponentMedOlikaProps
enText="Hej på dig"
ettNummer={3}
enLista={[1, 3, 4]}
ettObjekt={{ foo: "bar" }} //Obs! Dubbla hakparanteser
enFunktion={() => console.log("Jag skickades in i den här komponenten!")} />
const BildText = () => {
const animalType = "fågel";
const speed = 20; //kilometer i timmen;
return (<p>Bilden visar en {animalType}.
Den kan flyga i {speed} km/h vilket
motsvarar {speed / 3.6} m/s.</p>);
}
<BildText animalType="katt" speed={30} />
//Utan destructing
const KomponentMedOlikaProps = (props) => {
console.log(props.enText, props.ettNummer, props.enLista, props.ettObjekt);
props.enFunktion(); //Funktionen kan man anropa
return (<p>Jag har många props men visar inte upp nån av dem</p>)
}
//Med destructing
const KomponentMedOlikaProps = ({ enText, ettNummer, enLista, ettObjekt, enFunktion}) => {
console.log(enText, ettNummer, enLista, ettObjekt);
enFunktion(); //Funktionen kan man anropa
return (<p>Jag har många props men visar inte upp nån av dem</p>)
}
const Text = (props) => <p>{props.children}</p>
<Text>Allt som står här kommer hamna i
props.children i komponentens kod</ext>
const MinSuperLista = ({ children }) => (
<ul className="superStyling">
{ children }
</ul>
)
<MinSuperLista>
<li>En rad</li>
<li>Två rader</li>
<li>Tre rader</li>
</MinSuperLista>
Implementation
<Title>Kaffeappen V3</Title>
Resulterad HTML
<h1>Kaffeappen V3</h1>