Kembali ke Daftar Catatan

asChild (shadcn UI)

#shadcn#tailwind#typescript#ui

Apa itu asChild?

asChild adalah sebuah prop yang biasa dipakai di komponen shadcn UI seperti DropdownMenuTrigger, DialogTrigger, dll. Fungsinya untuk membuat komponen trigger menggantikan elemen default dengan elemen lain yang kita tentukan, tanpa kehilangan behavior atau event handling dari komponen aslinya.


Kenapa butuh asChild?

Biasanya, komponen trigger dari shadcn UI secara default merender elemen HTML tertentu, misalnya <button>. Tapi kalau kita pengen pakai komponen lain (misal: custom Button dari UI kit kita), cukup membungkus trigger dengan komponen itu gak cukup, karena bisa bikin struktur DOM jadi dobel, atau event-nya gak jalan.

Dengan asChild, komponen trigger akan:


Contoh Penggunaan

<DropdownMenu>
  <DropdownMenuTrigger asChild>
    <Button>Menu</Button>{' '}
    {/* Ini jadi trigger, bukan button bawaan dari DropdownMenuTrigger */}
  </DropdownMenuTrigger>
  <DropdownMenuContent>
    <DropdownMenuItem>Option 1</DropdownMenuItem>
  </DropdownMenuContent>
</DropdownMenu>

Kalau tanpa asChild, DropdownMenuTrigger akan render <button> sendiri. Dengan asChild, elemen <Button> kita yang dipakai sebagai trigger.


Manfaat


Catatan Tambahan


j Sumber:


Kesimpulan

asChild itu kayak “mode khusus” supaya kita bisa pakai komponen custom sebagai trigger tanpa kehilangan fungsi default dari komponen UI shadcn. Cocok banget buat yang mau styling custom tapi tetap pengen fitur lengkap dari shadcn UI.

Catatan Terkait