Update adr006-avoid-react-fc.md
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user