DEV Community

banti kevat
banti kevat

Posted on • Originally published at itinfohubs.blogspot.com

React me useImperativeHandle Hook Complete Guide

React me useImperativeHandle Hook Complete Guide (in Hindi)
React useImperativeHandle hook kya hai aur iska sahi istemal kaise karein? Is Hindi guide me aap step-by-step seekhenge ki kaise child components ke functions ko parent se access kiya jata hai bina prop drilling ke.

Dosto, jab hum ReactJS me kaam karte hain, toh aksar humein aisi situations milti hain jahan parent component ko child component ke andar ke kisi specific DOM element ya function ko call karne ki zaroorat padti hai. Waise toh React ka "Data Down, Events Up" ka principle bahut acha hai, lekin kabhi-kabhi humein thoda control manual chahiye hota hai. Yahi par entry hoti hai useImperativeHandle hook ki.

⚡ Quick Answer: useImperativeHandle ek advanced React hook hai jo aapko forwardRef ke saath milkar ye decide karne deta hai ki parent component ko child component ka kaunsa function ya property expose (show) karni hai. Ye tab use hota hai jab aapko child component ke internal methods ko direct trigger karna ho, jisse complex UI interactions asaan ho jaate hain.

useImperativeHandle Hook kya hai aur iski zaroorat kyun padti hai?

Simple shabdon mein kahein toh, useImperativeHandle ek "filter" ki tarah kaam karta hai. Jab aap forwardRef ka use karke kisi ref ko parent se child me pass karte hain, toh by default child apna poora DOM node expose kar deta hai. Lekin kya ho agar aap sirf ek specific function (jaise focus() ya reset()) expose karna chahte hain, na ki poora HTML element? Tabhi ye hook kaam aata hai.

Isse hamara code zyada "Encapsulated" banta hai. Hum internal implementation ko hidden rakh sakte hain aur sirf wahi methods expose karte hain jo zaroori hain.

🏗️ Architecture Diagram

Parent Component

useImperativeHandle

Exposed Method

Diagram: Parent aur Child ke beech selective communication flow.

useImperativeHandle ka use kaise karein? (Step-by-Step Guide)

Chaliye ek practical example dekhte hain jahan hum ek CustomInput component banayenge jiska focus button parent component se handle hoga.

import React, { useRef, useImperativeHandle, forwardRef } from 'react';

// Child Component
const CustomInput = forwardRef((props, ref) => {
  const inputRef = useRef();

  useImperativeHandle(ref, () => ({
    focusInput: () => {
      inputRef.current.focus();
    },
    clearInput: () => {
      inputRef.current.value = "";
    }
  }));

  return <input ref={inputRef} type="text" />;
});

// Parent Component
export default function App() {
  const childRef = useRef();

  return (
    <div>
      <CustomInput ref={childRef} />
      <button onClick={() => childRef.current.focusInput()}>Focus Input</button>
      <button onClick={() => childRef.current.clearInput()}>Clear Input</button>
    </div>
  );
}
Enter fullscreen mode Exit fullscreen mode

Is code me aapne dekha ki forwardRef ka use karke humne ref ko child tak pahunchaya, aur useImperativeHandle ke andar humne define kiya ki kaunsi methods bahar dikhani hain. Ye bahut hi powerful pattern hai.

useImperativeHandle vs forwardRef me kya antar hai?

Bahut se beginners confuse ho jaate hain. Yahan ek chhota comparison table hai:

Feature forwardRef useImperativeHandle
Purpose Ref ko child me pass karna Ref ke value ko customize karna
Control Full DOM access deta hai Selective methods expose karta hai
Dependency Base requirement hai Hamesha forwardRef ke saath chalta hai

Common Errors aur unhe Fix kaise karein

Jab aap ye hook use karte hain, toh aksar TypeError: cannot read property of undefined jaisa error aata hai. Iska main kaaran ye hota hai ki aapne ref ko attach karna bhool gaye ya forwardRef ka use sahi se nahi kiya.

  • Ref Check: Hamesha check karein ki useImperativeHandle(ref, ...) me wahi ref pass ho raha hai jo forwardRef((props, ref) => ...) me aaya hai.
  • Dependencies: Agar aapke expose kiye hue functions kisi state par depend karte hain, toh useImperativeHandle ke 3rd argument (dependency array) me unhe zaroor daalein.

Best Practices for Performance

Dosto, yaad rakhiye ki har cheez ke liye useImperativeHandle use nahi karna chahiye. React ka basic mantra hai "State Management" aur "Props" ke through data flow. Jab aapke paas koi dusra rasta na bache (jaise third-party library ke DOM methods ko control karna), tabhi is hook ka prayog karein. Isse aapka application code clean aur maintainable rahega.

Frequently Asked Questions (FAQs)

Q1: Kya hum useImperativeHandle ko bina forwardRef ke use kar sakte hain?
Nahi, useImperativeHandle ko kaam karne ke liye forwardRef ki zaroorat hoti hai kyunki isi se hum parent se ref ko child me pass karte hain.
Q2: Kya ye hook performance par asar dalta hai?
Normal use cases me nahi, lekin agar aap unnecessary methods expose karte hain ya dependency array me galat values dete hain, toh re-renders ho sakte hain.
Q3: Main ise kab use na karoon?
Agar aap props ya Context API ka use karke kaam kar sakte hain, toh useImperativeHandle se bachein. Ye "Imperative" approach hai, jo ki "Declarative" React ke against ja sakti hai.
Q4: Kya main isme useEffect ka use kar sakta hoon?
Zaroor! Aap useImperativeHandle ke andar logic likhte waqt useEffect ya dusre hooks ka use kar sakte hain agar aapko side-effects handle karne hain.
Q5: Iska use kisi library ke saath kaise karein?
Jab aap koi complex UI component (jaise Custom Modal ya Editor) banate hain, toh aap library ke internal API ko useImperativeHandle ke through expose karke parent ko full control de sakte hain.

Toh dosto, aaj humne useImperativeHandle ki gehrayi samjhi. Ye hook tabhi use karein jab aapko sach mein apne component ki internal functionality ko bahar expose karne ki sakht zaroorat ho. Official React Documentation ko follow karna kabhi na bhoolein kyunki wahan updates aate rehte hain.

Top comments (0)