DEV Community

Tamilselvan K
Tamilselvan K

Posted on

Day-53 Today I Created 5 Mini React Projects Using React Hooks

React Hooks make functional components powerful by letting them manage state, lifecycle, refs, routing, and context. In this blog, I’ll walk through 5 mini-projects, each focused on one of the most commonly used hooks:

  1. useState
  2. useRef
  3. useEffect
  4. useContext
  5. useNavigate

1. Show/Hide Text using useState

The useState hook allows us to store and update local component state. In this project, we toggle a paragraph's visibility using a boolean state.

Code:

import { useState } from 'react'; function ShowHideText() { const [show, setShow] = useState(true); return ( <div> <button onClick={() => setShow(!show)}> {show ? 'Hide' : 'Show'} Text </button> {show && <p>This is some text</p>} </div> ); } export default ShowHideText; 
Enter fullscreen mode Exit fullscreen mode

What it does:

  • Displays a button to show or hide text.
  • Demonstrates toggling a boolean using useState.

2. Auto Focus Input using useRef

The useRef hook is used to directly access a DOM element. In this project, we automatically focus the input when the component mounts.

Code:

import { useRef, useEffect } from 'react'; function FocusInput() { const inputRef = useRef(); useEffect(() => { inputRef.current.focus(); // Automatically focus input }, []); return <input ref={inputRef} placeholder="Type here" />; } export default FocusInput; 
Enter fullscreen mode Exit fullscreen mode

What it does:

  • Uses useRef to reference the input element.
  • Uses useEffect to auto-focus the input on load.

3. Display Current Time using useEffect

The useEffect hook runs side-effects like fetching data, setting timers, or DOM manipulation. Here, we use it to show the current time once when the component mounts.

Code:

import { useEffect, useState } from 'react'; function TimeDisplay() { const [time, setTime] = useState(''); useEffect(() => { setTime(new Date().toLocaleTimeString()); }, []); return ( <div> <p>Time: {time}</p> </div> ); } export default TimeDisplay; 
Enter fullscreen mode Exit fullscreen mode

What it does:

  • Shows the current time once when component loads.
  • Demonstrates useEffect with an empty dependency array [].

4. Access Global Data using useContext

The useContext hook lets you use data from a React context without prop-drilling. In this example, a NameContext provides the name to a child component.

App.js (Context Setup):

import { createContext } from 'react'; import Child from './components/Child'; export const NameContext = createContext(); function App() { return ( <NameContext.Provider value="Tamilselvan"> <Child /> </NameContext.Provider> ); } export default App; 
Enter fullscreen mode Exit fullscreen mode

Child.js:

import { useContext } from 'react'; import { NameContext } from '../../App'; function Child() { const name = useContext(NameContext); return ( <div> <p>Name: {name}</p> </div> ); } export default Child; 
Enter fullscreen mode Exit fullscreen mode

What it does:

  • Shares the name across components using Context.
  • Avoids passing props manually.

5. Navigation between pages using useNavigate

The useNavigate hook from react-router-dom allows programmatic navigation. We create two pages: Home and About, with buttons to switch between them.

Home.js:

import { useNavigate } from 'react-router-dom'; function Home() { const navigate = useNavigate(); return ( <div> <h2>Home Page</h2> <button onClick={() => navigate('/about')}>Go to About</button> </div> ); } export default Home; 
Enter fullscreen mode Exit fullscreen mode

About.js:

import { useNavigate } from 'react-router-dom'; function About() { const navigate = useNavigate(); return ( <div> <h2>About Page</h2> <button onClick={() => navigate('/')}>Go to Home</button> </div> ); } export default About; 
Enter fullscreen mode Exit fullscreen mode

What it does:

  • Navigates between Home and About pages using buttons.
  • Uses useNavigate for routing logic.

Top comments (0)