blog
Membuat Reusable Component dengan Menggunakan TailwindCSS dan Classnames di ReactJS - Blog - Naufaldi Rafif Satriya
Sering kali, ketika kita mengerjakan sebuah website maka kita akan mendapati banyak sekali komponen komponen yang sering sekali untuk digunakan. Misalnya...
Pranala
Sering kali, ketika kita mengerjakan sebuah website maka kita akan mendapati banyak sekali komponen komponen yang sering sekali untuk digunakan. Misalnya komponen button, container atau card. Kalau pengalamanku, komponen tersebut tidak memiliki logic yang rumit atau malah tidak ada sama sekali.
Permasalahan
Beberapa hari belakangan ini, aku sendiri merasakan sering membuat komponen komponen yang sama ditambah lagi, kira-kira ada tidak sih cara membaut reusable komponen dengan menggunakan TailwindCSS? Apalagi TailwindCSS memiliki nama-nama class yang cukup memudahkan dalam membuat _reusable component_ seperti _component button_ berikut
<button className='relative bg-blue-500 text-white p-6 rounded text-2xl font-bold overflow-visible'>
Example button
</button>
Kalau kita lihat, komponen ini bisa di ubah untuk menjadi _reusable component_ dengan memanfaatkan nama kelas dari TailwindCSS. Misalnya apabila kita ingin button primary kita menjadi seperti ini
<Button bgBlue="500" text="2xl">
Example button
</Button>
Sehingga kita bisa mengatur button kita bisa _reusable_ dan warna _background_ serta _text size_ bisa berganti sesuai keinginan kita.
Solusi
Menggunakan classnames npm module untuk bisa merubah / mengatur supaya pengaturan class component bisa disesuaikan.
Semula seperti ini
<button className='relative bg-blue-500 text-white p-6 rounded text-2xl font-bold overflow-visible'>
Example button
</button>
Menjadi seperti ini
<Button bgBlue="500" text="2xl">
Example button
</Button>
Lantas, bagaimana caranya?
Pertama, Install terlebih dahulu classname
npm install classnames --save
Kedua, membuat sebuah komponen button
import React from "react";
const Button = () => {
return (
<button
className= "py-3 lg:py-4 px-12 lg:px-16 text-white-500 font-semibold rounded-lg bg-orange-500 hover:shadow-orange-md transition-all outline-none text-base "
>
Button
</button>
);
};
export default Button;
Ketiga, kita akan merubah komponen tersebut menjadi lebih usable, bisa digunakan berulang ulang dengan template yang sama. Ini tergantung kebutuhan desain teman-teman. Misalnya, saya memiliki beberapa button dan yang berubah hanya dari segi warna background , text dan font size.
Maka , saya harus import classnames, menambahkannya ke classNames. Lalu, membuat logic untuk font size.
// Button.js
import React from 'react'
import classnames from 'classnames';
const Button = ({ size, bg, text, addClass, children })=> {
return (
<button className={classnames(`py-3 lg:py-4 px-12 lg:px-16 text-${text} font-semibold rounded-lg bg-${bg} hover:shadow-orange-md transition-all outline-none ${addClass}`, {
"text-sm": size === 'sm',
"text-lg": size === 'lg',
})}>
{children}
</button>
)
};
export default Button;
Penjelasannya :
sizemerupakan logic bila nilaisizesama dengansmmaka nanticlassyang ditambahkan adalahtext-sm, saatsizesama denganlgmaka nanticlassyang ditambahkan adalahtext-lg. Namun, saat tidak ada makasizeakannulldan secara defaultfont sizeadalahtext-base.bg, dantextadalahpropsyang nantinya menyesuaikan dengan nilai yang didapat. Karena seperti yang saya jelaskan diawal kalau saya hanya perlu mengganti warna dan text saja, sisanya sama semua dari desain.childrenadalah props untuk mengirimkan semua data yang di "apit" oleh komponen.AddClasskalau saya membutuhkan class tambahan. Misalnyamarginatau kelas lain.
Nanti, kurang lebih saat kita memanggil button menjadi seperti ini
import React from "react";
import Button from "../misc/Button";
const DetailJob = () => {
return (
<>
<h2 className="text-3xl">Button</h2>
<Button size="sm" bg="blue-100" text="white">Submit</Button>
</>
);
};
export default DetailJob;
Selesai.
Kesimpulan
Kurang lebih seperti itu cara saya membuat reusable component di ReactJS/NextJS dengan TailwindCSS dan bantuan classnames. Kalau teman-teman ada cara lain, bisa sharing atau berbagi di Twitter / hubungi saya via Twitter.
Dukung saya di Karyakarsa :
[
Dukung Naufaldi Rafif S di Karyakarsa!
Dukung Naufaldi Rafif S di Karyakarsa!


](https://karyakarsa.com/naufaldisatriya/tip?ref=blog.naufaldi.com)
Sumber Belajar Lain :
[
Building Reusable React Components Using Tailwind — Smashing Magazine
Tailwind is a popular utility-first CSS framework that provides low-level class names to web developers. In this article, we’ll explore ways to build reusable React components using Tailwind.


](https://www.smashingmagazine.com/2020/05/reusable-react-components-tailwind/?ref=blog.naufaldi.com)
Bagikan[](https://twitter.com/share?text=Membuat Reusable Component dengan Menggunakan TailwindCSS dan Classnames di ReactJS&url=https://blog.naufaldi.com/membuat-reusable-component-dengan-menggunakan-tailwind-dan-classnames/ "Twitter")[](https://www.facebook.com/sharer/sharer.php?u=https://blog.naufaldi.com/membuat-reusable-component-dengan-menggunakan-tailwind-dan-classnames/ "Facebook")[](https://www.linkedin.com/shareArticle?mini=true&url=https://blog.naufaldi.com/membuat-reusable-component-dengan-menggunakan-tailwind-dan-classnames//&title=Membuat Reusable Component dengan Menggunakan TailwindCSS dan Classnames di ReactJS "LinkedIn")[](/cdn-cgi/l/email-protection#d1eea2a4b3bbb4b2a5ec9cb4bcb3a4b0a5f183b4a4a2b0b3bdb4f192bebca1bebfb4bfa5f1b5b4bfb6b0bff19cb4bfb6b6a4bfb0bab0bff185b0b8bda6b8bfb5928282f1b5b0bff192bdb0a2a2bfb0bcb4a2f1b5b8f183b4b0b2a59b82f7b0bca1eab3beb5a8ecb9a5a5a1ebfefeb3bdbeb6ffb7b0bdb5b8ffa9a8abfebcb4bcb3a4b0a5fca3b4a4a2b0b3bdb4fcb2bebca1bebfb4bfa5fcb5b4bfb6b0bffcbcb4bfb6b6a4bfb0bab0bffca5b0b8bda6b8bfb5fcb5b0bffcb2bdb0a2a2bfb0bcb4a2fe "Email")
Topik NextJS ReactJS TailwindCSS Tutorial
[
Lesson Learned dari Test Accesibility pada Website
Accesibility konsep yang merujuk pada pengembangan dan desain web untuk memastikan kemudahan akses digital atau online bagi semua orang, baik yang mampu maupun memiliki disabilitas.…
09 Des 2020
](/lesson-learned-dari-test-accesibility-pada-website/)[
Membandingkan TailwindCSS dengan Framework Lain
Pranala TailwindCSS merupakan sebuah Framework CSS yang dibuat oleh Adam Wathan. Tidak…
24 Nov 2020
](/membandingkan-tailwindcss-dengan-framework-lain/)