Update adr006-avoid-react-fc.md

This commit is contained in:
ellieseastream
2020-07-01 17:30:28 +02:00
committed by GitHub
parent 4491e52567
commit cec455c0e4
@@ -2,23 +2,22 @@
## Context
Facebook has removed ```React.FC``` from their base template for a Typescript project. The reason for this was that it was found to be an unnecessary feature with next to no benefits in combination with a few downsides.
Facebook has removed `React.FC` from their base template for a Typescript project. The reason for this was that it was found to be an unnecessary feature with next to no benefits in combination with a few downsides.
The main reasons were:
- **children props** were implicitly added
- **Generic Type** lacked support
- **Generic Type** were not supported on children
Read more about the removal in [this PR](https://github.com/facebook/create-react-app/pull/8177).
## Decision
To keep our codebase up to date, we have decided that React.FC and React.SFC should be avoided in our codebase when adding new code.
To keep our codebase up to date, we have decided that `React.FC` and `React.SFC` should be avoided in our codebase when adding new code.
Here is an example:
````
```ts
/* Avoid this: */
type BadProps = { text: string; };
const BadComponent: FC<BadProps> = ({ text, children }) => (
<div>
<div>{text}</div>
@@ -26,17 +25,16 @@ const BadComponent: FC<BadProps> = ({ text, children }) => (
</div>
)
/* Do this instead: */
type GoodProps = { text: string; children?: React.ReactNode };
type GoodProps = { text: string; children?: React.ReactNode; };
const GoodComponent = ({ text, children }: GoodProps) => (
<div>
<div>{text}</div>
{children}
</div>
)
````
```
## Consequences
We will gradually remove the current usage of React.FC and React.SFC from our codebase.
We will gradually remove the current usage of `React.FC` and `React.SFC` from our codebase.