Back Kembali ke Daftar 📅 04 Jun 2025

useImperativeHandle – Custom Method dari Komponen Anak

Artikel terbaru dari MahirGroups

 Buat komponen input yang bisa dikontrol dari parent, misalnya: parent bisa memanggil focusInput() secara langsung ke anak.  

Struktur: 

  • Komponen Anak: input yang expose fungsi focus().
  • Komponen Parent: tombol yang panggil fungsi dari anak.
Kode Lengkap:
 
jsxCopyEditimport React, { useRef, useImperativeHandle, forwardRef } from 'react';

// Komponen anak menggunakan forwardRef
const CustomInput = forwardRef((props, ref) => {
  const inputRef = useRef();

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

  return <input ref={inputRef} placeholder="Dikendalikan dari parent" />;
});

function ParentComponent() {
  const customInputRef = useRef();

  return (
    <div>
      <h1>useImperativeHandle Demo</h1>
      <CustomInput ref={customInputRef} />
      <button onClick={() => customInputRef.current.focusInput()}>
        Fokus ke Input
      </button>
    </div>
  );
}

export default ParentComponent;

Penjelasan useImperativeHandle:
  • Digunakan bersamaan dengan forwardRef untuk expose method dari komponen anak ke parent.
  • Membatasi akses ref: hanya expose method tertentu (focusInput()), bukan seluruh DOM.
  • Cocok untuk membuat komponen yang reusable dengan kontrol imperatif (misalnya .scrollToTop(), .focus(), .reset()).

Bagikan artikel ini: