-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
prop-types
fails with destructuring
#1422
Comments
Shape props have known bugs; do you have skipShapeProps enabled? |
@ljharb no - we use Relay, so basically all of our props are within a shape ( |
We have this test case: code: [
'class Hello extends React.Component {',
' render() {',
' this.props.a.b',
' return <div>Hello</div>;',
' }',
'}',
'Hello.propTypes = {',
' a: PropTypes.shape({',
' })',
'};'
].join('\n'),
errors: [{
message: '\'a.b\' is missing in props validation'
}] Judging from that, it seems some basic shapes support exists and the example should actually be supported. Indeed when I try the following snippet I actually get an error. But the destructuring doesn't work with the shapes... class DestructuredDeepMissing extends React.PureComponent {
render () {
this.props.foo.bar;
}
}
DestructuredDeepMissing.propTypes = {
foo: PropTypes.shape({}).isRequired,
}; |
I have sort of the same error, but not with any My exampleclass MyComponent extends React.Component {
static displayName = 'MyComponent';
static propTypes = {
name: PropTypes.string
}
render() {
const { name, title, ...rest } = this.props;
return (
<div {...rest}>
<h1>{name}</h1>
</div>
);
}
} Here it fails to detect I have narrowed it down to the spread on the JSX element: class MyComponent extends React.Component {
static displayName = 'MyComponent';
static propTypes = {
name: PropTypes.string
}
renderName() {
const { name, ...rest } = this.props;
return <h1 {...rest}>{name}</h1>;
}
render() {
const { title } = this.props;
return (
<div>
{title}
{this.renderName()}
</div>
);
}
} In this example, if I remove the |
That seems like an improvement to be made. |
@ljharb looked into this tonight locally with latest master, it actually looks like this has been fixed in a commit between last release and today. The code above is erroring correctly. I believe this should be fixed when you publish a new version. Can you confirm? Thanks |
oh, great! Could you open a PR with these test cases, and then we can close this issue? |
Sure! @ljharb |
## The devDependency [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) was updated from `7.13.0` to `7.14.0`. This version is **not covered** by your **current version range**. If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update. --- <details> <summary>Release Notes for v7.14.0</summary> <h3>Added</h3> <ul> <li>Add <code>jsx-curly-newline</code> rule (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/1493" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/1493/hovercard">#1493</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=16285118" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/golopot">@golopot</a>)</li> <li>Add support for nested destructuring to <code>prop-types</code> (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/296" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/296/hovercard">#296</a> <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/1422" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/1422/hovercard">#1422</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=16285118" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/golopot">@golopot</a>)</li> <li>Add support for variables defined as props to <code>prop-types</code> and <code>no-unused-prop-types</code> (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/442" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/442/hovercard">#442</a> <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/833" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/833/hovercard">#833</a> <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/1002" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/1002/hovercard">#1002</a> <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/1116" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/1116/hovercard">#1116</a> <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/1257" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/1257/hovercard">#1257</a> <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/1764" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/1764/hovercard">#1764</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=16285118" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/golopot">@golopot</a>)</li> <li>Add <code>checkFragmentShorthand</code> option to <code>jsx-key</code> (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2316" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2316/hovercard">#2316</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=19822240" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/kaykayehnn">@kaykayehnn</a>)</li> </ul> <h3>Fixed</h3> <ul> <li>Fix <code>no-did-mount-set-state</code> and <code>no-did-update-set-state</code> to handle cDU and cDM defined as class properties (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/1595" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/1595/hovercard">#1595</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=1413255" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/jaaberg">@jaaberg</a>)</li> <li>Fix <code>sort-prop-types</code> cash when a shape PropType is defined in a variable (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/1749" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/1749/hovercard">#1749</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=93752" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/alexzherdev">@alexzherdev</a>)</li> <li>Fix <code>no-unused-state</code> false positive when using state of non-lifecycle method (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2274" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2274/hovercard">#2274</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=16285118" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/golopot">@golopot</a>)</li> <li>Fix <code>static-property-placement</code> false positive when accessing static property inside method (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/2283" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/2283/hovercard">#2283</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=20278756" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/dmason30">@dmason30</a>)</li> <li>Fix <code>prop-type</code> detection for annotated props with default value (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/2298" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/2298/hovercard">#2298</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=13209" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/yannickcr">@yannickcr</a>)</li> </ul> <h3>Changed</h3> <ul> <li>Add ESLint 6.0.0 as valid peerDependency (<a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=13209" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/yannickcr">@yannickcr</a>)</li> <li>Improve <code>no-render-return-value</code> performance (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2259" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2259/hovercard">#2259</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=16285118" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/golopot">@golopot</a>)</li> <li>Change <code>jsx-sort-props</code> to report errors only on the identifier (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/2312" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/2312/hovercard">#2312</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=74260" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/MrHen">@MrHen</a>)</li> <li>Change to warn only once if react version cannot be detected (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/2276" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/2276/hovercard">#2276</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=45469" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/ljharb">@ljharb</a>)</li> <li>Documentation improvements (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2263" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2263/hovercard">#2263</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=15232461" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/dimitropoulos">@dimitropoulos</a>, <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2262" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2262/hovercard">#2262</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=473530" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/ybiquitous">@ybiquitous</a>, <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2295" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2295/hovercard">#2295</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=1921409" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/battaglr">@battaglr</a>, <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2302" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2302/hovercard">#2302</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=5185660" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/Jason-Cooke">@Jason-Cooke</a>, <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2303" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2303/hovercard">#2303</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=16285118" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/golopot">@golopot</a>)</li> <li>Code refactoring (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2265" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2265/hovercard">#2265</a> <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2267" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2267/hovercard">#2267</a> <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2286" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2286/hovercard">#2286</a> <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2294" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2294/hovercard">#2294</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=16285118" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/golopot">@golopot</a>, <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=45469" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/ljharb">@ljharb</a>)</li> <li>Tests improvements (<a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/pull/2304" data-hovercard-type="pull_request" data-hovercard-url="/jsx-eslint/eslint-plugin-react/pull/2304/hovercard">#2304</a> <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/issues/1047" data-hovercard-type="issue" data-hovercard-url="/jsx-eslint/eslint-plugin-react/issues/1047/hovercard">#1047</a> <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=16285118" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/golopot">@golopot</a>, <a class="user-mention" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=13209" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://urls.greenkeeper.io/yannickcr">@yannickcr</a>)</li> </ul> </details> <details> <summary>Commits</summary> <p>The new version differs by 68 commits.</p> <ul> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/dfaa92f34ac39fa8c320068501ec86fe0b9c8122"><code>dfaa92f</code></a> <code>Update CHANGELOG and bump version</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/c52b61b0d371b956b6c6fef3240839f4cea2ffa7"><code>c52b61b</code></a> <code>Merge pull request #2316 from kaykayehnn/jsx-key-fragments</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/8db631b400b242266be38202926d86c244e8d116"><code>8db631b</code></a> <code>[Fix] Fix detection of annotated props with default value</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/bbebefd2292294e892f743993f2cc778e3e36a85"><code>bbebefd</code></a> <code>[Tests] Remove AppVeyor</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/0d49f5abd1d5423a7a305d26cad9a7f5b046bc89"><code>0d49f5a</code></a> <code>[New] Add ESLint ^6.0.0 as valid peerDependency</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/0364ed210b95f1a14bda0180a3d194cf9e6b7176"><code>0364ed2</code></a> <code>Fix formatting issues</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/7c1abedb575bd97404933ec85144697a30778443"><code>7c1abed</code></a> <code>Add checkFragmentShorthand option</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/ed04c2fd48a1c1ad21daade6225229e281446c6a"><code>ed04c2f</code></a> <code>Fix tests in eslint < 5</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/0d1aaf8b569e6d22bba90467fe46ee7062e5e5ba"><code>0d1aaf8</code></a> <code>Handle fragments in jsx-key</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/7d449a9e4a1330ab950df4b55348d6eff5d025af"><code>7d449a9</code></a> <code>[New] <code>jsx-sort-props</code>: Change reported range to only the identifier</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/1e102f0d3281c24cd1b99c27bdbf63c14d6bcde2"><code>1e102f0</code></a> <code>Change reported range to only the identifier</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/e6b4c33a1db4cc94c3e9223b09fb92b1dbddc00d"><code>e6b4c33</code></a> <code>Merge pull request #2301 from golopot/fix-cached-props-2</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/9a63e19460e7ddbf988f328cf9f9730f4f156e0d"><code>9a63e19</code></a> <code>Immediately destructure out propVariables rather than using it as a namespace</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/3a1a0d1d159efd6bb3c597671e4ec8afaee22018"><code>3a1a0d1</code></a> <code>Apply suggestion: replace mutation with Object.assign</code></li> <li><a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/commit/89b8143ac18f4d3f0d45717436ad2aa344e2d494"><code>89b8143</code></a> <code>Apply suggestion: replace concat([a]) with concat(a)</code></li> </ul> <p>There are 68 commits in total.</p> <p>See the <a href="https://urls.greenkeeper.io/yannickcr/eslint-plugin-react/compare/f39829ffb3134fb1298c7e96a4349eb835f15877...dfaa92f34ac39fa8c320068501ec86fe0b9c8122">full diff</a></p> </details> <details> <summary>FAQ and help</summary> There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new). </details> --- Your [Greenkeeper](https://greenkeeper.io) bot 🌴
##### [v7.35.0](https://github.com/jsx-eslint/eslint-plugin-react/blob/HEAD/CHANGELOG.md#7350---20240719) ##### Added - support eslint v9 ([#3759][] [@mdjermanovic](https://github.com/mdjermanovic)) - export flat configs from plugin root and fix flat config crash ([#3694][] [@bradzacher](https://github.com/bradzacher) [@mdjermanovic](https://github.com/mdjermanovic)) - add \[`jsx-props-no-spread-multi`] ([#3724][] [@SimonSchick](https://github.com/SimonSchick)) - \[`forbid-component-props`]: add `propNamePattern` to allow / disallow prop name patterns ([#3774][] [@akulsr0](https://github.com/akulsr0)) - \[`jsx-handler-names`]: support ignoring component names ([#3772][] [@akulsr0](https://github.com/akulsr0)) - version settings: Allow react defaultVersion to be configurable ([#3771][] [@onlywei](https://github.com/onlywei)) - \[`jsx-closing-tag-location`]: add `line-aligned` option ([#3777] [@kimtaejin3](https://github.com/kimtaejin3)) - \[`no-danger`]: add `customComponentNames` option ([#3748][] [@akulsr0](https://github.com/akulsr0)) ##### Fixed - \[`no-invalid-html-attribute`]: substitute placeholders in suggestion messages ([#3759][] [@mdjermanovic](https://github.com/mdjermanovic)) - \[`sort-prop-types`]: single line type ending without semicolon ([#3784][] [@akulsr0](https://github.com/akulsr0)) - \[`require-default-props`]: report when required props have default value ([#3785][] [@akulsr0](https://github.com/akulsr0)) ##### Changed - \[Refactor] `variableUtil`: Avoid creating a single flat variable scope for each lookup ([#3782][] [@DanielRosenwasser](https://github.com/DanielRosenwasser)) [7.35.0]: https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.4...v7.35.0 [#3785]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3785 [#3784]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3784 [#3782]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3782 [#3777]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3777 [#3774]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3774 [#3772]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3772 [#3771]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3771 [#3759]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3759 [#3748]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3748 [#3724]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3724 [#3694]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3694 ##### [v7.34.4](https://github.com/jsx-eslint/eslint-plugin-react/blob/HEAD/CHANGELOG.md#7344---20240713) ##### Fixed - \[`prop-types`]: fix `className` missing in prop validation false negative ([#3749] [@akulsr0](https://github.com/akulsr0)) - \[`sort-prop-types`]: Check for undefined before accessing `node.typeAnnotation.typeAnnotation` ([#3779] [@tylerlaprade](https://github.com/tylerlaprade)) [7.34.4]: https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.3...v7.34.4 [#3779]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3779 [#3749]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3749 ##### [v7.34.3](https://github.com/jsx-eslint/eslint-plugin-react/blob/HEAD/CHANGELOG.md#7343---20240618) ##### Fixed - \[`prop-types`]: null-check rootNode before calling getScope ([#3762][] [@crnhrv](https://github.com/crnhrv)) - \[`boolean-prop-naming`]: avoid a crash with a spread prop ([#3733][] [@ljharb](https://github.com/ljharb)) - \[`jsx-boolean-value`]: `assumeUndefinedIsFalse` with `never` must not allow explicit `true` value ([#3757][] [@6uliver](https://github.com/6uliver)) - \[`no-object-type-as-default-prop`]: enable rule for components with many parameters ([#3768][] [@JulienR1](https://github.com/JulienR1)) - \[`jsx-key`]: incorrect behavior for checkKeyMustBeforeSpread with map callbacks ([#3769][] [@akulsr0](https://github.com/akulsr0)) [7.34.3]: https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.2...v7.34.3 [#3769]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3769 [#3768]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3768 [#3762]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3762 [#3757]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3757 [#3733]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3733 ##### [v7.34.2](https://github.com/jsx-eslint/eslint-plugin-react/releases/tag/v7.34.2) ##### Fixed - [`boolean-prop-naming`][boolean-prop-naming]: avoid a crash with a non-TSTypeReference type ([#3718][] [@developer-bandi](https://github.com/developer-bandi)) - [`jsx-no-leaked-render`][jsx-no-leaked-render]: invalid report if left side is boolean ([#3746][] [@akulsr0](https://github.com/akulsr0)) - [`jsx-closing-bracket-location`][jsx-closing-bracket-location]: message shows `{{details}}` when there are no details ([#3759][] [@mdjermanovic](https://github.com/mdjermanovic)) - [`no-invalid-html-attribute`][no-invalid-html-attribute]: ensure error messages are correct ([#3759][] [@mdjermanovic](https://github.com/mdjermanovic), [@ljharb](https://github.com/ljharb)) ##### Changed - \[Refactor] create various eslint utils to fix eslint deprecations ([#3759][] [@mdjermanovic](https://github.com/mdjermanovic), [@ljharb](https://github.com/ljharb)) [7.34.2]: https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.1...v7.34.2 [#3759]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3759 [#3746]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3746 [#3718]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3718 [`boolean-prop-naming`]: docs/rules/boolean-prop-naming.md [`jsx-no-leaked-render`]: docs/rules/jsx-no-leaked-render.md [`jsx-closing-bracket-location`]: docs/rules/jsx-closing-bracket-location.md [`no-invalid-html-attribute`]: docs/rules/no-invalid-html-attribute.md ##### [v7.34.1](https://github.com/jsx-eslint/eslint-plugin-react/releases/tag/v7.34.1) ##### Fixed - [`jsx-no-leaked-render`][jsx-no-leaked-render]: prevent wrongly adding parens ([#3700][] [@developer-bandi](https://github.com/developer-bandi)) - [`boolean-prop-naming`][boolean-prop-naming]: detect TS interfaces ([#3701][] [@developer-bandi](https://github.com/developer-bandi)) - [`boolean-prop-naming`][boolean-prop-naming]: literalType error fix ([#3704][] [@developer-bandi](https://github.com/developer-bandi)) - [`boolean-prop-naming`][boolean-prop-naming]: allow TSIntersectionType ([#3705][] [@developer-bandi](https://github.com/developer-bandi)) - [`no-unknown-property`][no-unknown-property]: support `popover`, `popovertarget`, `popovertargetaction` attributes ([#3707][] [@ljharb](https://github.com/ljharb)) - [`no-unknown-property`][no-unknown-property]: only match `data-*` attributes containing `-` ([#3713][] [@silverwind](https://github.com/silverwind)) - [`checked-requires-onchange-or-readonly`][checked-requires-onchange-or-readonly]: correct options that were behaving opposite ([#3715][] [@jaesoekjjang](https://github.com/jaesoekjjang)) ##### Changed - [`boolean-prop-naming`][boolean-prop-naming]: improve error message ([@ljharb](https://github.com/ljharb)) [#1000]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1000 [#1002]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1002 [#1005]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1005 [#100]: https://github.com/jsx-eslint/eslint-plugin-react/issues/100 [#1010]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1010 [#1013]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1013 [#1022]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1022 [#1029]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1029 [#102]: https://github.com/jsx-eslint/eslint-plugin-react/issues/102 [#1034]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1034 [#1038]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1038 [#1041]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1041 [#1043]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1043 [#1046]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1046 [#1047]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1047 [#1050]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1050 [#1053]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1053 [#1057]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1057 [#105]: https://github.com/jsx-eslint/eslint-plugin-react/issues/105 [#1061]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1061 [#1062]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1062 [#1070]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1070 [#1071]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1071 [#1073]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1073 [#1076]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1076 [#1079]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1079 [#1088]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1088 [#1098]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1098 [#1101]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1101 [#1103]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1103 [#110]: https://github.com/jsx-eslint/eslint-plugin-react/issues/110 [#1116]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1116 [#1117]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1117 [#1119]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1119 [#1121]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1121 [#1122]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1122 [#1123]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1123 [#1130]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1130 [#1131]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1131 [#1132]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1132 [#1134]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1134 [#1135]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1135 [#1139]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1139 [#1148]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1148 [#1149]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1149 [#114]: https://github.com/jsx-eslint/eslint-plugin-react/pull/114 [#1151]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1151 [#1155]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1155 [#1161]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1161 [#1167]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1167 [#1173]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1173 [#1174]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1174 [#1175]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1175 [#1178]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1178 [#1179]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1179 [#117]: https://github.com/jsx-eslint/eslint-plugin-react/pull/117 [#1180]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1180 [#1183]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1183 [#1189]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1189 [#118]: https://github.com/jsx-eslint/eslint-plugin-react/issues/118 [#1192]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1192 [#1195]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1195 [#1199]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1199 [#119]: https://github.com/jsx-eslint/eslint-plugin-react/pull/119 [#11]: https://github.com/jsx-eslint/eslint-plugin-react/issues/11 [#1201]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1201 [#1202]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1202 [#1206]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1206 [#1213]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1213 [#1216]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1216 [#1222]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1222 [#1226]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1226 [#1227]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1227 [#122]: https://github.com/jsx-eslint/eslint-plugin-react/issues/122 [#1231]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1231 [#1236]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1236 [#1239]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1239 [#123]: https://github.com/jsx-eslint/eslint-plugin-react/pull/123 [#1241]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1241 [#1242]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1242 [#1246]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1246 [#1249]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1249 [#1253]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1253 [#1257]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1257 [#125]: https://github.com/jsx-eslint/eslint-plugin-react/issues/125 [#1260]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1260 [#1261]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1261 [#1262]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1262 [#1264]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1264 [#1266]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1266 [#1269]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1269 [#1273]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1273 [#1274]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1274 [#1277]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1277 [#127]: https://github.com/jsx-eslint/eslint-plugin-react/pull/127 [#1281]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1281 [#1287]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1287 [#1288]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1288 [#1289]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1289 [#128]: https://github.com/jsx-eslint/eslint-plugin-react/issues/128 [#1290]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1290 [#1294]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1294 [#1296]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1296 [#129]: https://github.com/jsx-eslint/eslint-plugin-react/issues/129 [#12]: https://github.com/jsx-eslint/eslint-plugin-react/issues/12 [#1301]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1301 [#1303]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1303 [#1306]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1306 [#1308]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1308 [#1309]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1309 [#130]: https://github.com/jsx-eslint/eslint-plugin-react/issues/130 [#1310]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1310 [#1323]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1323 [#1329]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1329 [#132]: https://github.com/jsx-eslint/eslint-plugin-react/issues/132 [#1335]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1335 [#1337]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1337 [#133]: https://github.com/jsx-eslint/eslint-plugin-react/issues/133 [#1344]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1344 [#1352]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1352 [#1353]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1353 [#1354]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1354 [#135]: https://github.com/jsx-eslint/eslint-plugin-react/issues/135 [#1361]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1361 [#1363]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1363 [#1364]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1364 [#1366]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1366 [#1369]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1369 [#136]: https://github.com/jsx-eslint/eslint-plugin-react/issues/136 [#1374]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1374 [#1376]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1376 [#137]: https://github.com/jsx-eslint/eslint-plugin-react/issues/137 [#1380]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1380 [#1381]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1381 [#1382]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1382 [#1383]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1383 [#1384]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1384 [#1386]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1386 [#1388]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1388 [#1389]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1389 [#138]: https://github.com/jsx-eslint/eslint-plugin-react/pull/138 [#1392]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1392 [#1395]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1395 [#1396]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1396 [#1398]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1398 [#139]: https://github.com/jsx-eslint/eslint-plugin-react/issues/139 [#13]: https://github.com/jsx-eslint/eslint-plugin-react/issues/13 [#1400]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1400 [#1403]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1403 [#1406]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1406 [#1409]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1409 [#1412]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1412 [#1413]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1413 [#1414]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1414 [#1417]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1417 [#1422]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1422 [#1423]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1423 [#142]: https://github.com/jsx-eslint/eslint-plugin-react/issues/142 [#1432]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1432 [#1435]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1435 [#1438]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1438 [#1444]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1444 [#1449]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1449 [#144]: https://github.com/jsx-eslint/eslint-plugin-react/issues/144 [#1450]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1450 [#145]: https://github.com/jsx-eslint/eslint-plugin-react/issues/145 [#1462]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1462 [#1464]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1464 [#1467]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1467 [#1468]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1468 [#146]: https://github.com/jsx-eslint/eslint-plugin-react/issues/146 [#1471]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1471 [#1475]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1475 [#1476]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1476 [#1478]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1478 [#1479]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1479 [#147]: https://github.com/jsx-eslint/eslint-plugin-react/pull/147 [#1485]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1485 [#148]: https://github.com/jsx-eslint/eslint-plugin-react/issues/148 [#1493]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1493 [#1494]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1494 [#1496]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1496 [#1497]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1497 [#1499]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1499 [#14]: https://github.com/jsx-eslint/eslint-plugin-react/issues/14 [#1500]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1500 [#1502]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1502 [#1507]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1507 [#1508]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1508 [#1511]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1511 [#1512]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1512 [#1514]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1514 [#1515]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1515 [#1517]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1517 [#1518]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1518 [#1521]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1521 [#1524]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1524 [#1525]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1525 [#1526]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1526 [#1530]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1530 [#1533]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1533 [#1538]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1538 [#1542]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1542 [#1543]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1543 [#1546]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1546 [#1547]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1547 [#154]: https://github.com/jsx-eslint/eslint-plugin-react/issues/154 [#1552]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1552 [#1559]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1559 [#1562]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1562 [#1566]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1566 [#156]: https://github.com/jsx-eslint/eslint-plugin-react/pull/156 [#1571]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1571 [#1572]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1572 [#1576]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1576 [#1578]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1578 [#1581]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1581 [#1588]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1588 [#1591]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1591 [#1595]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1595 [#1597]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1597 [#159]: https://github.com/jsx-eslint/eslint-plugin-react/issues/159 [#15]: https://github.com/jsx-eslint/eslint-plugin-react/issues/15 [#1607]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1607 [#1610]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1610 [#1611]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1611 [#1617]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1617 [#161]: https://github.com/jsx-eslint/eslint-plugin-react/pull/161 [#1621]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1621 [#1624]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1624 [#1635]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1635 [#1636]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1636 [#163]: https://github.com/jsx-eslint/eslint-plugin-react/issues/163 [#1642]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1642 [#1644]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1644 [#164]: https://github.com/jsx-eslint/eslint-plugin-react/pull/164 [#1650]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1650 [#1653]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1653 [#1655]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1655 [#1657]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1657 [#1659]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1659 [#165]: https://github.com/jsx-eslint/eslint-plugin-react/issues/165 [#1665]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1665 [#1666]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1666 [#1669]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1669 [#1670]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1670 [#1675]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1675 [#1677]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1677 [#167]: https://github.com/jsx-eslint/eslint-plugin-react/pull/167 [#1681]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1681 [#1689]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1689 [#1690]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1690 [#1699]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1699 [#16]: https://github.com/jsx-eslint/eslint-plugin-react/issues/16 [#1703]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1703 [#1717]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1717 [#1722]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1722 [#1724]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1724 [#1728]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1728 [#172]: https://github.com/jsx-eslint/eslint-plugin-react/issues/172 [#1732]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1732 [#1737]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1737 [#1742]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1742 [#1743]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1743 [#1749]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1749 [#1750]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1750 [#1753]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1753 [#1754]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1754 [#1755]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1755 [#1758]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1758 [#1759]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1759 [#1764]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1764 [#1767]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1767 [#176]: https://github.com/jsx-eslint/eslint-plugin-react/pull/176 [#1779]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1779 [#1783]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1783 [#1785]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1785 [#178]: https://github.com/jsx-eslint/eslint-plugin-react/issues/178 [#1791]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1791 [#1793]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1793 [#1794]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1794 [#1796]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1796 [#1804]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1804 [#1805]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1805 [#1806]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1806 [#1815]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1815 [#1817]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1817 [#1819]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1819 [#181]: https://github.com/jsx-eslint/eslint-plugin-react/issues/181 [#1824]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1824 [#1825]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1825 [#1827]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1827 [#1828]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1828 [#1829]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1829 [#182]: https://github.com/jsx-eslint/eslint-plugin-react/issues/182 [#1830]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1830 [#1831]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1831 [#183]: https://github.com/jsx-eslint/eslint-plugin-react/pull/183 [#1843]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1843 [#1844]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1844 [#1845]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1845 [#1849]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1849 [#184]: https://github.com/jsx-eslint/eslint-plugin-react/issues/184 [#1851]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1851 [#1854]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1854 [#1857]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1857 [#1858]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1858 [#1860]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1860 [#1861]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1861 [#1863]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1863 [#1867]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1867 [#1868]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1868 [#1873]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1873 [#1874]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1874 [#187]: https://github.com/jsx-eslint/eslint-plugin-react/pull/187 [#1880]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1880 [#1883]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1883 [#1890]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1890 [#1891]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1891 [#1892]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1892 [#1898]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1898 [#189]: https://github.com/jsx-eslint/eslint-plugin-react/pull/189 [#1903]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1903 [#1905]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1905 [#1907]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1907 [#1909]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1909 [#1911]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1911 [#1914]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1914 [#1918]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1918 [#1924]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1924 [#1926]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1926 [#1929]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1929 [#192]: https://github.com/jsx-eslint/eslint-plugin-react/issues/192 [#1932]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1932 [#1939]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1939 [#193]: https://github.com/jsx-eslint/eslint-plugin-react/pull/193 [#1941]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1941 [#1942]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1942 [#1945]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1945 [#1946]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1946 [#1949]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1949 [#1953]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1953 [#1956]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1956 [#1957]: https://github.com/jsx-eslint/eslint-plugin-react/issues/1957 [#1977]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1977 [#1978]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1978 [#197]: https://github.com/jsx-eslint/eslint-plugin-react/pull/197 [#1980]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1980 [#1983]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1983 [#1984]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1984 [#1988]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1988 [#1989]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1989 [#198]: https://github.com/jsx-eslint/eslint-plugin-react/pull/198 [#1994]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1994 [#1995]: https://github.com/jsx-eslint/eslint-plugin-react/pull/1995 [#199]: https://github.com/jsx-eslint/eslint-plugin-react/issues/199 [#2001]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2001 [#2002]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2002 [#2004]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2004 [#2006]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2006 [#2008]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2008 [#2012]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2012 [#2015]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2015 [#2016]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2016 [#201]: https://github.com/jsx-eslint/eslint-plugin-react/issues/201 [#2026]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2026 [#2029]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2029 [#2032]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2032 [#2040]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2040 [#2043]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2043 [#2044]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2044 [#2051]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2051 [#2056]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2056 [#2061]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2061 [#2064]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2064 [#2065]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2065 [#2067]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2067 [#2069]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2069 [#206]: https://github.com/jsx-eslint/eslint-plugin-react/pull/206 [#2075]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2075 [#2082]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2082 [#2084]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2084 [#2085]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2085 [#2086]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2086 [#2089]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2089 [#208]: https://github.com/jsx-eslint/eslint-plugin-react/pull/208 [#2090]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2090 [#2095]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2095 [#2097]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2097 [#2098]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2098 [#2099]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2099 [#2100]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2100 [#2102]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2102 [#2103]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2103 [#2104]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2104 [#2109]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2109 [#210]: https://github.com/jsx-eslint/eslint-plugin-react/issues/210 [#2110]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2110 [#2111]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2111 [#2113]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2113 [#2114]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2114 [#2115]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2115 [#2116]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2116 [#2117]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2117 [#2118]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2118 [#211]: https://github.com/jsx-eslint/eslint-plugin-react/issues/211 [#2120]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2120 [#2123]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2123 [#2125]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2125 [#2127]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2127 [#2128]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2128 [#2131]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2131 [#2134]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2134 [#2136]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2136 [#2137]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2137 [#213]: https://github.com/jsx-eslint/eslint-plugin-react/issues/213 [#2143]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2143 [#2145]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2145 [#2146]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2146 [#2147]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2147 [#214]: https://github.com/jsx-eslint/eslint-plugin-react/issues/214 [#215]: https://github.com/jsx-eslint/eslint-plugin-react/issues/215 [#2166]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2166 [#2167]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2167 [#217]: https://github.com/jsx-eslint/eslint-plugin-react/issues/217 [#2180]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2180 [#2182]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2182 [#2183]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2183 [#2184]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2184 [#2191]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2191 [#2193]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2193 [#2198]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2198 [#219]: https://github.com/jsx-eslint/eslint-plugin-react/pull/219 [#2200]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2200 [#2202]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2202 [#2203]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2203 [#2206]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2206 [#2207]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2207 [#220]: https://github.com/jsx-eslint/eslint-plugin-react/issues/220 [#2210]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2210 [#221]: https://github.com/jsx-eslint/eslint-plugin-react/issues/221 [#2225]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2225 [#2227]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2227 [#2229]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2229 [#222]: https://github.com/jsx-eslint/eslint-plugin-react/pull/222 [#2230]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2230 [#2232]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2232 [#2233]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2233 [#2234]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2234 [#2238]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2238 [#2246]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2246 [#2250]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2250 [#2256]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2256 [#2259]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2259 [#2261]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2261 [#2262]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2262 [#2263]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2263 [#2265]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2265 [#2267]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2267 [#226]: https://github.com/jsx-eslint/eslint-plugin-react/issues/226 [#2273]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2273 [#2274]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2274 [#2276]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2276 [#2283]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2283 [#2286]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2286 [#2288]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2288 [#228]: https://github.com/jsx-eslint/eslint-plugin-react/issues/228 [#2292]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2292 [#2294]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2294 [#2295]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2295 [#2298]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2298 [#229]: https://github.com/jsx-eslint/eslint-plugin-react/issues/229 [#22]: https://github.com/jsx-eslint/eslint-plugin-react/pull/22 [#2302]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2302 [#2303]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2303 [#2304]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2304 [#230]: https://github.com/jsx-eslint/eslint-plugin-react/issues/230 [#2312]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2312 [#2316]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2316 [#2319]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2319 [#2326]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2326 [#232]: https://github.com/jsx-eslint/eslint-plugin-react/pull/232 [#2330]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2330 [#2336]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2336 [#233]: https://github.com/jsx-eslint/eslint-plugin-react/issues/233 [#2349]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2349 [#2354]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2354 [#2359]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2359 [#235]: https://github.com/jsx-eslint/eslint-plugin-react/issues/235 [#2361]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2361 [#2364]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2364 [#2367]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2367 [#236]: https://github.com/jsx-eslint/eslint-plugin-react/issues/236 [#2375]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2375 [#2378]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2378 [#237]: https://github.com/jsx-eslint/eslint-plugin-react/issues/237 [#2380]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2380 [#2383]: https://github.com/jsx-eslint/eslint-plugin-react/issue/2383 [#2385]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2385 [#2391]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2391 [#2392]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2392 [#2395]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2395 [#2399]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2399 [#23]: https://github.com/jsx-eslint/eslint-plugin-react/issues/23 [#2402]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2402 [#2408]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2408 [#2409]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2409 [#240]: https://github.com/jsx-eslint/eslint-plugin-react/issues/240 [#2410]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2410 [#2414]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2414 [#2419]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2419 [#2422]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2422 [#2425]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2425 [#2426]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2426 [#2428]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2428 [#2429]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2429 [#242]: https://github.com/jsx-eslint/eslint-plugin-react/pull/242 [#2431]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2431 [#2436]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2436 [#2437]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2437 [#2438]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2438 [#243]: https://github.com/jsx-eslint/eslint-plugin-react/issues/243 [#2443]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2443 [#2446]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2446 [#2448]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2448 [#2449]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2449 [#244]: https://github.com/jsx-eslint/eslint-plugin-react/issues/244 [#2451]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2451 [#2453]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2453 [#2460]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2460 [#2463]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2463 [#2465]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2465 [#2468]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2468 [#2469]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2469 [#2470]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2470 [#2478]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2478 [#247]: https://github.com/jsx-eslint/eslint-plugin-react/issues/247 [#2483]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2483 [#2489]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2489 [#248]: https://github.com/jsx-eslint/eslint-plugin-react/pull/248 [#249]: https://github.com/jsx-eslint/eslint-plugin-react/issues/249 [#24]: https://github.com/jsx-eslint/eslint-plugin-react/issues/24 [#2500]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2500 [#2504]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2504 [#2505]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2505 [#2507]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2507 [#2510]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2510 [#2514]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2514 [#251]: https://github.com/jsx-eslint/eslint-plugin-react/issues/251 [#2521]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2521 [#2523]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2523 [#2532]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2532 [#2533]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2533 [#2534]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2534 [#2535]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2535 [#2536]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2536 [#2540]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2540 [#2542]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2542 [#2544]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2544 [#2546]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2546 [#2547]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2547 [#254]: https://github.com/jsx-eslint/eslint-plugin-react/issues/254 [#2556]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2556 [#2557]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2557 [#255]: https://github.com/jsx-eslint/eslint-plugin-react/issues/255 [#2560]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2560 [#2561]: https://github.com/jsx-eslint/eslint-plugin-react/issue/2561 [#2564]: https://github.com/jsx-eslint/eslint-plugin-react/issue/2564 [#2568]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2568 [#256]: https://github.com/jsx-eslint/eslint-plugin-react/issues/256 [#2570]: https://github.com/jsx-eslint/eslint-plugin-react/issue/2570 [#2572]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2572 [#2575]: https://github.com/jsx-eslint/eslint-plugin-react/issue/2575 [#2578]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2578 [#2581]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2581 [#2582]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2582 [#2583]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2583 [#2587]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2587 [#2588]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2588 [#2593]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2593 [#2595]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2595 [#2596]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2596 [#259]: https://github.com/jsx-eslint/eslint-plugin-react/issues/259 [#2601]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2601 [#2604]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2604 [#2606]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2606 [#2608]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2608 [#2610]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2610 [#2614]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2614 [#2615]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2615 [#2616]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2616 [#261]: https://github.com/jsx-eslint/eslint-plugin-react/pull/261 [#2621]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2621 [#2625]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2625 [#2633]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2633 [#2635]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2635 [#2636]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2636 [#2638]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2638 [#2640]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2640 [#2643]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2643 [#264]: https://github.com/jsx-eslint/eslint-plugin-react/issues/264 [#2661]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2661 [#2667]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2667 [#2673]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2673 [#2676]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2676 [#2679]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2679 [#267]: https://github.com/jsx-eslint/eslint-plugin-react/issues/267 [#2680]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2680 [#2682]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2682 [#2683]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2683 [#2687]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2687 [#268]: https://github.com/jsx-eslint/eslint-plugin-react/issues/268 [#2690]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2690 [#2693]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2693 [#2696]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2696 [#2697]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2697 [#2699]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2699 [#269]: https://github.com/jsx-eslint/eslint-plugin-react/issues/269 [#2704]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2704 [#2708]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2708 [#2710]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2710 [#2711]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2711 [#2712]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2712 [#2713]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2713 [#2716]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2716 [#2721]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2721 [#2724]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2724 [#2730]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2730 [#2731]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2731 [#2733]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2733 [#2736]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2736 [#2737]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2737 [#2740]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2740 [#2741]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2741 [#2744]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2744 [#2746]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2746 [#2748]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2748 [#2750]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2750 [#2753]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2753 [#2756]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2756 [#2757]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2757 [#2759]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2759 [#2761]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2761 [#2763]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2763 [#2767]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2767 [#276]: https://github.com/jsx-eslint/eslint-plugin-react/issues/276 [#2770]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2770 [#2771]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2771 [#2772]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2772 [#2775]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2775 [#2779]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2779 [#277]: https://github.com/jsx-eslint/eslint-plugin-react/issues/277 [#2780]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2780 [#2782]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2782 [#2789]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2789 [#2790]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2790 [#2791]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2791 [#2792]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2792 [#2796]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2796 [#2797]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2797 [#2799]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2799 [#27]: https://github.com/jsx-eslint/eslint-plugin-react/issues/27 [#2801]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2801 [#2802]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2802 [#2803]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2803 [#2805]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2805 [#2807]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2807 [#2808]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2808 [#280]: https://github.com/jsx-eslint/eslint-plugin-react/issues/280 [#2813]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2813 [#2815]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2815 [#2816]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2816 [#281]: https://github.com/jsx-eslint/eslint-plugin-react/issues/281 [#2820]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2820 [#2822]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2822 [#2823]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2823 [#2826]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2826 [#2833]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2833 [#2835]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2835 [#2840]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2840 [#2843]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2843 [#2846]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2846 [#2848]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2848 [#2851]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2851 [#2852]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2852 [#2855]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2855 [#285]: https://github.com/jsx-eslint/eslint-plugin-react/issues/285 [#2861]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2861 [#2862]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2862 [#2863]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2863 [#2869]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2869 [#286]: https://github.com/jsx-eslint/eslint-plugin-react/issues/286 [#2870]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2870 [#2871]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2871 [#2875]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2875 [#2877]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2877 [#2878]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2878 [#2879]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2879 [#287]: https://github.com/jsx-eslint/eslint-plugin-react/issues/287 [#2881]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2881 [#2882]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2882 [#2883]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2883 [#2891]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2891 [#2893]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2893 [#2894]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2894 [#2895]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2895 [#2897]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2897 [#2899]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2899 [#28]: https://github.com/jsx-eslint/eslint-plugin-react/issues/28 [#2900]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2900 [#2906]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2906 [#2908]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2908 [#290]: https://github.com/jsx-eslint/eslint-plugin-react/issues/290 [#2910]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2910 [#2917]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2917 [#291]: https://github.com/jsx-eslint/eslint-plugin-react/issues/291 [#2921]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2921 [#2923]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2923 [#2925]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2925 [#2929]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2929 [#2930]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2930 [#2933]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2933 [#2935]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2935 [#293]: https://github.com/jsx-eslint/eslint-plugin-react/pull/293 [#2943]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2943 [#2945]: https://github.com/jsx-eslint/eslint-plugin-react/issues/2945 [#2949]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2949 [#2950]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2950 [#2953]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2953 [#2957]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2957 [#2961]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2961 [#2963]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2963 [#2965]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2965 [#296]: https://github.com/jsx-eslint/eslint-plugin-react/issues/296 [#2972]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2972 [#2974]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2974 [#2975]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2975 [#2977]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2977 [#297]: https://github.com/jsx-eslint/eslint-plugin-react/issues/297 [#2980]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2980 [#2982]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2982 [#2985]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2985 [#2986]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2986 [#2989]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2989 [#298]: https://github.com/jsx-eslint/eslint-plugin-react/issues/298 [#2990]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2990 [#2992]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2992 [#2994]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2994 [#2998]: https://github.com/jsx-eslint/eslint-plugin-react/pull/2998 [#29]: https://github.com/jsx-eslint/eslint-plugin-react/issues/29 [#3001]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3001 [#3002]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3002 [#3006]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3006 [#300]: https://github.com/jsx-eslint/eslint-plugin-react/issues/300 [#3016]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3016 [#3018]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3018 [#301]: https://github.com/jsx-eslint/eslint-plugin-react/pull/301 [#3025]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3025 [#3026]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3026 [#3036]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3036 [#3038]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3038 [#3039]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3039 [#303]: https://github.com/jsx-eslint/eslint-plugin-react/issues/303 [#3043]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3043 [#3048]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3048 [#3049]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3049 [#3051]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3051 [#3052]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3052 [#3053]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3053 [#3056]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3056 [#3059]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3059 [#3061]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3061 [#3064]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3064 [#3065]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3065 [#3066]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3066 [#306]: https://github.com/jsx-eslint/eslint-plugin-react/pull/306 [#3070]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3070 [#3071]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3071 [#3076]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3076 [#3078]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3078 [#307]: https://github.com/jsx-eslint/eslint-plugin-react/issues/307 [#3082]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3082 [#3083]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3083 [#3085]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3085 [#3088]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3088 [#308]: https://github.com/jsx-eslint/eslint-plugin-react/pull/308 [#3092]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3092 [#30]: https://github.com/jsx-eslint/eslint-plugin-react/issues/30 [#3102]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3102 [#3110]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3110 [#3111]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3111 [#3112]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3112 [#3113]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3113 [#3122]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3122 [#3124]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3124 [#3126]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3126 [#3129]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3129 [#3132]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3132 [#3133]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3133 [#3136]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3136 [#3141]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3141 [#3142]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3142 [#3144]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3144 [#3145]: https://github.com/jsx-eslint/eslint-plugin-react/issue/3145 [#3146]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3146 [#3149]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3149 [#314]: https://github.com/jsx-eslint/eslint-plugin-react/pull/314 [#3156]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3156 [#315]: https://github.com/jsx-eslint/eslint-plugin-react/pull/315 [#3160]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3160 [#3163]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3163 [#3167]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3167 [#3169]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3169 [#3174]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3174 [#317]: https://github.com/jsx-eslint/eslint-plugin-react/issues/317 [#3182]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3182 [#3186]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3186 [#3189]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3189 [#318]: https://github.com/jsx-eslint/eslint-plugin-react/issues/318 [#3190]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3190 [#3191]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3191 [#3195]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3195 [#3198]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3198 [#3199]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3199 [#319]: https://github.com/jsx-eslint/eslint-plugin-react/issues/319 [#3202]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3202 [#3203]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3203 [#3207]: https://github.com/jsx-eslint/eslint-plugin-react/issues/3207 [#320]: https:…
The
prop-types
rule fails when presented with destructuring:package.json
.eslintrc
Examples.jsx
Related: #296
Possibly related: #1346
Also possibly related is that
no-unused-prop-types
(without using Flow) fails on destructuring as well, which is behavior I was able to replicate (though there seem to be a plethora of tickets related to this, especially in the Flow context).The text was updated successfully, but these errors were encountered: