DEV Community

Cover image for React Component Props
Ben D.
Ben D.

Posted on Edited on

React Component Props

The most important concepts to understand React are components, props, state and hooks.

I will explain 'props', short for 'properties' here. Props are accessed as parameters in the Component function. Often times, they are destructured to keep the code cleaner.

I will assume that you know how to import and export the components in your project hierarchy but if not, you can check out the create-react-app docs

//in the App.js file you would render the prop:

<Hello person={benjamin} />

//and in the Hello.js file, the person prop would be passed down:

function Hello(props) {
return <h1>Hello, {props.person}</h1>
}

//which would ouput:

<h1>Hello, benjamin</h1>

//alternatively, you could destructure the prop for cleaner code:

function Hello({props}) {
return <h1> Hello,{person}</h1>
}
Enter fullscreen mode Exit fullscreen mode

You can have as many props as needed. For example:

function Weather ({temperature, day} {
return <h2> It will be {temperature} degrees on {day}</h2>
}

<Weather temperature='84' day='Tuesday' />

//Which results in:

<h2> It will be 84 degrees on Tuesday </h2>

Enter fullscreen mode Exit fullscreen mode

Class components

It seems that developers are moving away from class-based components as it's unnecessarily verbose. However, if you are still using class components, the process is very similar, but you need to add a this.props instead of just props

For example:

import { Component } from 'react'

class Greeting extends Component {
  render() {
    return <p>Hello, {this.props.who}!</p>;
  }
}
Enter fullscreen mode Exit fullscreen mode

Prop Types

A prop can have any value including strings, numbers, objects, arrays, booleans, variable, function references.

  • String literal:

<Component prop='this is a string'>

  • Template literal:

<Component prop={`this is a string with a ${variable}`}

  • Number literal:

<Component prop={14} />

  • Boolean literal:

<Component prop={true} /}

  • Object literal:

<Component pro={{property : 'value'}} />

  • Array literal:

<Component prop={['item 1','item 2']} />

  • JSX

<Component prop={Message who='Batman' />} />

  • Variables or function references

<Component prop={functionReference} />

Top comments (0)