-
Notifications
You must be signed in to change notification settings - Fork 47.2k
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
[lint] treat React.use() the same as use() #27769
Conversation
0fca22a
to
790aab0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm overall, but it looks like we also could be reusing this fn:
react/packages/eslint-plugin-react-hooks/src/RulesOfHooks.js
Lines 52 to 59 in 790aab0
function isReactFunction(node, functionName) { | |
return ( | |
node.name === functionName || | |
(node.type === 'MemberExpression' && | |
node.object.name === 'React' && | |
node.property.name === functionName) | |
); | |
} |
should that one be updated to include the lowercase 'react'
?
@@ -108,7 +108,17 @@ function isUseEffectEventIdentifier(node) { | |||
} | |||
|
|||
function isUseIdentifier(node) { | |||
return node.type === 'Identifier' && node.name === 'use'; | |||
switch (node.type) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: elsewhere in the implementation, isReactFunction
is used to detect React.useX
. Might as well use it here too to ensure the behavior is consistent.
react/packages/eslint-plugin-react-hooks/src/RulesOfHooks.js
Lines 52 to 60 in 790aab0
function isReactFunction(node, functionName) { | |
return ( | |
node.name === functionName || | |
(node.type === 'MemberExpression' && | |
node.object.name === 'React' && | |
node.property.name === functionName) | |
); | |
} | |
Updates React from 2c338b16f to 0cdfef19b. ### React upstream changes - facebook/react#27821 - facebook/react#27820 - facebook/react#27818 - facebook/react#27819 - facebook/react#27817 - facebook/react#27703 - facebook/react#27796 - facebook/react#27811 - facebook/react#27804 - facebook/react#27807 - facebook/react#27805 - facebook/react#27792 - facebook/react#27788 - facebook/react#26852 - facebook/react#27790 - facebook/react#27786 - facebook/react#27785 - facebook/react#27783 - facebook/react#27784 - facebook/react#27769 - facebook/react#27766 - facebook/react#27701 - facebook/react#27732 - facebook/react#27740 - facebook/react#27767 - facebook/react#27768 - facebook/react#27765 - facebook/react#27759 - facebook/react#27579 - facebook/react#27709 - facebook/react#27734 - facebook/react#27739 - facebook/react#27717 - facebook/react#27583 - facebook/react#27713 Closes NEXT-1887
Updates React from 2c338b16f to 0cdfef19b. ### React upstream changes - facebook/react#27821 - facebook/react#27820 - facebook/react#27818 - facebook/react#27819 - facebook/react#27817 - facebook/react#27703 - facebook/react#27796 - facebook/react#27811 - facebook/react#27804 - facebook/react#27807 - facebook/react#27805 - facebook/react#27792 - facebook/react#27788 - facebook/react#26852 - facebook/react#27790 - facebook/react#27786 - facebook/react#27785 - facebook/react#27783 - facebook/react#27784 - facebook/react#27769 - facebook/react#27766 - facebook/react#27701 - facebook/react#27732 - facebook/react#27740 - facebook/react#27767 - facebook/react#27768 - facebook/react#27765 - facebook/react#27759 - facebook/react#27579 - facebook/react#27709 - facebook/react#27734 - facebook/react#27739 - facebook/react#27717 - facebook/react#27583 - facebook/react#27713 Closes NEXT-1887
We should probably treat `React.use()` the same as `use()` to allow it within loops and conditionals. Ideally this would implement a test that `React` is imported or required from `'react'`, but we don't otherwise implement such a test.
We should probably treat `React.use()` the same as `use()` to allow it within loops and conditionals. Ideally this would implement a test that `React` is imported or required from `'react'`, but we don't otherwise implement such a test. DiffTrain build for commit 640cceb.
##### [v5.0.0](https://github.com/facebook/react/blob/HEAD/packages/eslint-plugin-react-hooks/CHANGELOG.md#500) - **New Violations:** Component names now need to start with an uppercase letter instead of a non-lowercase letter. This means `_Button` or `_component` are no longer valid. ([@kassens](https://github.com/kassens)) in [#25162](facebook/react#25162) <!----> - Consider dispatch from `useActionState` stable. ([@eps1lon](https://github.com/eps1lon) in [#29665](facebook/react#29665)) - Add support for ESLint v9. ([@eps1lon](https://github.com/eps1lon) in [#28773](facebook/react#28773)) - Accept `as` expression in callback. ([@StyleShit](https://github.com/StyleShit) in [#28202](facebook/react#28202)) - Accept `as` expressions in deps array. ([@StyleShit](https://github.com/StyleShit) in [#28189](facebook/react#28189)) - Treat `React.use()` the same as `use()`. ([@kassens](https://github.com/kassens) in [#27769](facebook/react#27769)) - Move `use()` lint to non-experimental. ([@kassens](https://github.com/kassens) in [#27768](facebook/react#27768)) - Support Flow `as` expressions. ([@cpojer](https://github.com/cpojer) in [#27590](facebook/react#27590)) - Allow `useEffect(fn, undefined)`. ([@kassens](https://github.com/kassens) in [#27525](facebook/react#27525)) - Disallow hooks in async functions. ([@acdlite](https://github.com/acdlite) in [#27045](facebook/react#27045)) - Rename experimental `useEvent` to `useEffectEvent`. ([@sebmarkbage](https://github.com/sebmarkbage) in [#25881](facebook/react#25881)) - Lint for presence of `useEvent` functions in dependency lists. ([@poteto](https://github.com/poteto) in [#25512](facebook/react#25512)) - Check `useEvent` references instead. ([@poteto](https://github.com/poteto) in [#25319](facebook/react#25319)) - Update `RulesOfHooks` with `useEvent` rules. ([@poteto](https://github.com/poteto) in [#25285](facebook/react#25285))
We should probably treat
React.use()
the same asuse()
to allow it within loops and conditionals.Ideally this would implement a test that
React
is imported or required from'react'
, but we don't otherwise implement such a test.