Skip to content

Commit e305279

Browse files
authored
Merge pull request #1344 from DianaSuvorova/docs
[docs] [no-unused-prop-types] known false positives
2 parents 95acd93 + f446335 commit e305279

File tree

1 file changed

+52
-2
lines changed

1 file changed

+52
-2
lines changed

docs/rules/no-unused-prop-types.md

+52-2
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,14 @@ This rule can take one argument to ignore some specific props during validation.
5757

5858
## Known Issues/Limitations
5959

60-
***False positives*** for components with Stateless Functional Components;
60+
- [False Positives: SFC (helper render methods)](#false-positives-sfc)
61+
- [False Positives: Intermediate variables](#false-positives-intermediate-variables)
62+
63+
### False positives SFC
64+
For components with Stateless Functional Components (often used as helper render methods);
6165
SFC is a function that takes prop(s) as an argument and returns a JSX expression.
6266
Even if this function gets called from a component the props that are only used inside SFC would not be considered used by a component.
6367

64-
6568
Triggers false positive:
6669
```js
6770
function AComponent(props) {
@@ -106,3 +109,50 @@ AComponent.propTypes = {
106109
bProp: PropTypes.string
107110
};
108111
```
112+
113+
### False positives intermediate variables
114+
when assigning a part or a whole props object to a variable and using it to access a prop value.
115+
116+
```js
117+
class AComponent extends React.Component {
118+
render() {
119+
const { props } = this;
120+
121+
return <div>{props.aProp}</div>;
122+
}
123+
}
124+
AComponent.propTypes = {
125+
aProp: PropTypes.string // aProp PropType is defined but prop is never used
126+
};
127+
```
128+
129+
suggested code structure to avoid the issue:
130+
131+
- accessing prop directly
132+
```js
133+
class AComponent extends React.Component {
134+
render() {
135+
return <div>{this.props.aProp}</div>;
136+
}
137+
}
138+
AComponent.propTypes = {
139+
aProp: PropTypes.string
140+
};
141+
```
142+
143+
- or assigning a final prop to a variable.
144+
145+
```js
146+
class AComponent extends React.Component {
147+
const { aProp } = this.props;
148+
render() {
149+
return <div>{aProp}</div>;
150+
}
151+
}
152+
AComponent.propTypes = {
153+
aProp: PropTypes.string
154+
};
155+
```
156+
157+
Using Intermediate variables might be desired and unavoidable for more complex props structure.
158+
Like for shape prop types. To avoid false positive in this case make sure `skipShapeProps` is set to `true`.

0 commit comments

Comments
 (0)