Certainly one of React’s core ideas is reusability via composable elements. Elements permit splitting advanced UI into separate, reusable items. Nevertheless, for elements to speak, they want a option to move knowledge to one another. Enter props.
Props permit passing knowledge from a father or mother element to a baby element. They’re like operate parameters, however for React elements.
Let’s take a look at a easy instance:
// Father or mother element
const Father or mother = () => {
return (
<Youngster
colour="blue"
onClick={handleClick}
/>
);
}
// Youngster element
const Youngster = (props) => {
return <div>{props.colour}</div>
}
The father or mother element Father or mother
passes two props to the kid element Youngster
– a colour
string and an onClick
occasion handler.
The kid element receives these as a props
object and may entry them as props.colour
and props.onClick
.
Defining Props in a Element
To specify the props a element expects, you possibly can outline them within the element operate or class:
// Operate element
const MyComponent = (props) => {
// ...
}
// Class element
class MyComponent extends React.Element {
// ...
}
React will verify that elements are handed all of the props they count on. This helps catch bugs early.
You may also set default values for props:
const MyComponent = (props) => 'blue';
// ...
Passing Props When Rendering Elements
When rendering a element, you move props like operate arguments:
// Father or mother element
<MyComponent
title={title}
content material={content material}
creator={creator}
/>
Entry these within the little one element via props
.
Props are read-only within the little one element. The kid can’t modify the props – this retains the info circulate unidirectional.
PropTypes for Validation
It’s a good suggestion to validate props being handed to a element. React supplies a PropTypes module to specify prop varieties:
import PropTypes from 'prop-types';
const MyComponent = (props) => {
// ...
}
MyComponent.propTypes = {
title: PropTypes.string.isRequired,
content material: PropTypes.string.isRequired,
creator: PropTypes.form({
title: PropTypes.string.isRequired,
avatar: PropTypes.string
})
}
This validates props handed to MyComponent
. If invalid props are handed, a warning will seem within the console.
When to Use Props vs State
Whereas props permit passing knowledge right into a element, state is used to trace adjustments inside a element.
Use props for:
- Knowledge that doesn’t change
- Initializing element state
- Passing knowledge from father or mother to little one elements
Use state for:
- Knowledge that adjustments over time
- UI state based mostly on consumer interplay
- Re-rendering elements when knowledge adjustments
Getting the excellence proper takes follow – misusing props and state is a typical supply of bugs in React.
Conclusion
Props permit completely different elements to work collectively by passing knowledge between them. Outline props a element expects, then move them when rendering:
// Father or mother
<Youngster title="Hi there" />
// Youngster
const Youngster = (props) => {
<h1>{props.title}</h1>
}
Props permit a unidirectional knowledge circulate between dad and mom and youngsters. Mixed with state to handle altering knowledge, they make constructing reusable elements a lot simpler in React.