npm install eslint-plugin-react-hooks

ESLint rules for React Hooks

About eslint-plugin-react-hooks

The npm package "eslint-plugin-react-hooks" is a highly beneficial tool for developers working with React Hooks, providing a robust set of ESLint rules specifically tailored for this modern React feature. React Hooks simplify the state and lifecycle features from class components into functions, making the codebase cleaner and more manageable. However, they also introduce a new set of challenges and potential errors in code. This is where eslint-plugin-react-hooks comes into play, enhancing code quality and consistency by enforcing best practices and preventing common mistakes when using Hooks, such as incorrect dependencies in useEffect or missing dependency arrays.

To incorporate eslint-plugin-react-hooks into your development environment, you can easily add it by running `npm install eslint-plugin-react-hooks` in your project's root directory. This command installs the plugin and its dependencies, integrating seamlessly with ESLint to scrutinize your React Hooks code. Once installed, it requires a simple configuration update in your ESLint settings to activate the rules specific to React Hooks. This ensures that every piece of code involving React Hooks adheres to established patterns and practices, reducing bugs and improving the maintainability of your applications.

The key benefit of using eslint-plugin-react-hooks in your React projects is its ability to automatically detect and warn developers about issues with their Hooks code. This proactive feedback loop significantly speeds up the development process, as developers do not have to manually check for common pitfalls associated with Hooks usage. Moreover, it fosters a learning environment where developers can gradually understand better practices related to Hooks, leading to more efficient and reliable code. In essence, eslint-plugin-react-hooks is an indispensable tool for any developer looking to harness the full power of React Hooks while maintaining a high standard of code quality.

More from facebook

facebook npm packages

Find the best node modules for your project.

Search npm

react-is

Brand checking of React Elements...

Read more
,

react

React is a JavaScript library for building user interfaces...

Read more
,

react-dom

React package for working with the DOM...

Read more
,

fb-watchman

Bindings for the Watchman file watching...

Read more
,

eslint-plugin-react-hooks

ESLint rules for React...

Read more
,

facebook-nodejs-business-sdk

SDK for the Facebook Marketing API in Javascript and Node...

Read more
,

react-facebook-auth

A Component React for Facebook...

Read more
,

facebook-locales

Maps locales to Facebook...

Read more

Dependencies

Core dependencies of this npm package and its dev dependencies.

@babel/cli, @babel/code-frame, @babel/core, @babel/helper-module-imports, @babel/parser, @babel/plugin-external-helpers, @babel/plugin-proposal-class-properties, @babel/plugin-proposal-object-rest-spread, @babel/plugin-syntax-dynamic-import, @babel/plugin-syntax-import-meta, @babel/plugin-syntax-jsx, @babel/plugin-syntax-typescript, @babel/plugin-transform-arrow-functions, @babel/plugin-transform-block-scoped-functions, @babel/plugin-transform-block-scoping, @babel/plugin-transform-classes, @babel/plugin-transform-computed-properties, @babel/plugin-transform-destructuring, @babel/plugin-transform-for-of, @babel/plugin-transform-literals, @babel/plugin-transform-modules-commonjs, @babel/plugin-transform-object-super, @babel/plugin-transform-parameters, @babel/plugin-transform-react-jsx, @babel/plugin-transform-react-jsx-development, @babel/plugin-transform-react-jsx-source, @babel/plugin-transform-shorthand-properties, @babel/plugin-transform-spread, @babel/plugin-transform-template-literals, @babel/preset-flow, @babel/preset-react, @babel/traverse, @rollup/plugin-babel, @rollup/plugin-commonjs, @rollup/plugin-node-resolve, @rollup/plugin-replace, abortcontroller-polyfill, art, babel-plugin-syntax-trailing-function-commas, chalk, cli-table, coffee-script, confusing-browser-globals, core-js, create-react-class, danger, error-stack-parser, eslint, eslint-config-prettier, eslint-plugin-babel, eslint-plugin-eslint-plugin, eslint-plugin-ft-flow, eslint-plugin-jest, eslint-plugin-no-for-of-loops, eslint-plugin-no-function-declare-after-return, eslint-plugin-react, eslint-plugin-react-internal, fbjs-scripts, filesize, flow-bin, flow-remove-types, glob, glob-stream, google-closure-compiler, gzip-size, hermes-eslint, hermes-parser, jest, jest-cli, jest-diff, jest-environment-jsdom, jest-snapshot-serializer-raw, minimatch, minimist, mkdirp, ncp, prettier, prettier-2, pretty-format, prop-types, random-seed, react-lifecycles-compat, rimraf, rollup, rollup-plugin-prettier, rollup-plugin-strip-banner, semver, shelljs, signedsource, targz, through2, tmp, typescript, undici, web-streams-polyfill, yargs

Documentation

A README file for the eslint-plugin-react-hooks code repository. View Code

eslint-plugin-react-hooks

This ESLint plugin enforces the Rules of Hooks.

It is a part of the Hooks API for React.

Installation

Note: If you're using Create React App, please use react-scripts >= 3 instead of adding it directly.

Assuming you already have ESLint installed, run:

# npm
npm install eslint-plugin-react-hooks --save-dev

# yarn
yarn add eslint-plugin-react-hooks --dev

Then extend the recommended eslint config:

{
  "extends": [
    // ...
    "plugin:react-hooks/recommended"
  ]
}

Custom Configuration

If you want more fine-grained configuration, you can instead add a snippet like this to your ESLint configuration file:

{
  "plugins": [
    // ...
    "react-hooks"
  ],
  "rules": {
    // ...
    "react-hooks/rules-of-hooks": "error",
    "react-hooks/exhaustive-deps": "warn"
  }
}

Advanced Configuration

exhaustive-deps can be configured to validate dependencies of custom Hooks with the additionalHooks option. This option accepts a regex to match the names of custom Hooks that have dependencies.

{
  "rules": {
    // ...
    "react-hooks/exhaustive-deps": ["warn", {
      "additionalHooks": "(useMyCustomHook|useMyOtherCustomHook)"
    }]
  }
}

We suggest to use this option very sparingly, if at all. Generally saying, we recommend most custom Hooks to not use the dependencies argument, and instead provide a higher-level API that is more focused around a specific use case.

Valid and Invalid Examples

Please refer to the Rules of Hooks documentation to learn more about this rule.

License

MIT