When you use a Custom component, like
<MyComponent>Hello World</MyComponent>
Whatever you write between the tags (in above case Hello World) is passed to the component as a children
prop.
So when write your component like
const Link = ({ active, children, onClick }) => {
You are destructuring the props and getting only active
, children
and onClick
from the props passed to the component
Consider for example, you call the Link
component like
<Link active="true" onClick={someFunc} style={{color: 'orange'}}>Hello</Link>
Then amongst all the props i.e active, onClick, style, children
, you will only be accessing active, onClick,children
in the component.
For your second question:
and what does this do?
children: PropTypes.node.isRequired,
So here PropTypes
is a way of performing a typeCheck on the props that are passed to the component. It is being imported from the react-proptypes
package.
So
children: PropTypes.node.isRequired
makes the prop children
to be required. So if your render your component like
<Link />
It will not pass the type check and hence you need to do
<Link>Text</Link>