How to use children with React Stateless Functional Component in TypeScript?
React 16.8 Update:
Since React 16.8, the names React.SFC
and React.StatelessComponent
are deprecated. Actually, they have become aliases for React.FunctionComponent
type or React.FC
for short.
You would use them the same way though:
const MyStatelessComponent : React.FunctionComponent<MyProps> = props =>
<div>
<p>{props.propInMyProps}</p>
<p>{props.children}</p>
</div>
Before React 16.8 (Older):
For now, you can use the React.StatelessComponent<>
type, as:
const MyStatelessComponent : React.StatelessComponent<{}> = props =>
<div>{props.children}</div>
What I have added there is setting the return type of the component to React.StatelessComponent
type.
For a component with your own custom props (like MyProps
interface):
const MyStatelessComponent : React.StatelessComponent<MyProps> = props =>
<div>
<p>{props.propInMyProps}</p>
<p>{props.children}</p>
</div>
Now, props
has got the children
property as well as those from MyProps
interface.
I checked this in typescript version 2.0.7
Additionally, you can use React.SFC
instead of React.StatelessComponent
for brevity.
You can use React.PropsWithChildren<P>
type for your props:
interface MyProps { }
function MyComponent(props: React.PropsWithChildren<MyProps>) {
return <div>{props.children}</div>;
}