React hooks and best practises to use them effectively

Published: Dec 6, 2022

Hooks are a powerful feature in React that allows you to use state and other React features without writing a class. They were introduced in React 16.8 and have been gaining popularity ever since. In this blog post, we will discuss some best practices for using hooks in your React applications.

First and foremost, it is important to understand when to use hooks. If you are writing a new component and do not need to manage state or use other React features, you should use a functional component instead of a class component. This will make your code cleaner and easier to read.

One of the most useful hooks is the useState hook, which allows you to add state to functional components. The useState hook takes a single argument, which is the initial state, and returns an array with two items: the current state and a function to update the state. Here is an example of how to use the useState hook:

import React, { useState } from 'react';

function Example() {
  // Declare a new state variable, which we'll call "count"
  const [count, setCount] = useState(0);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={() => setCount(count + 1)}>
        Click me
      </button>
    </div>
  );
}

Another important aspect of using hooks is keeping them organized and easy to understand. In larger components, it can be useful to extract hooks into separate functions. This will make your code more readable and maintainable. Here is an example of how to do this:

import React, { useState } from 'react';

function useCounter() {
  const [count, setCount] = useState(0);

  function increment() {
    setCount(count + 1);
  }

  return [count, increment];
}

function Counter() {
  const [count, increment] = useCounter();

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={increment}>Click me</button>
    </div>
  );
}

Another best practice when using hooks is to avoid using them inside loops, conditions, or nested functions. This can lead to bugs and make your code difficult to understand. Instead, you should extract the hook into a separate function and call that function from the appropriate place in your code. Here is an example of how to do this:

import React, { useState } from 'react';

function useCounter(initialCount) {
  const [count, setCount] = useState(initialCount);

  function increment() {
    setCount(count + 1);
  }

  return [count, increment];
}

function Counter({ initialCount }) {
  const [count, increment] = useCounter(initialCount);

  return (
    <div>
      <p>You clicked {count} times</p>
      <button onClick={increment}>Click me</button>
    </div>
  );
}

In conclusion, hooks are a powerful feature in React that allows you to use state and other React features without writing a class. By following the best practices discussed in this blog post, you can use hooks effectively in your React applications.

Built with ♥ and SvelteKit, Deployed by GitHub Pages