Panduan untuk Komponen Beranak: Sebuah Panduan untuk Pemula
Hai teman-teman, sang pengguna React masa depan! Hari ini, kita akan mengemban sebuah perjalanan menarik ke dunia komponen beranak dalam ReactJS. Jangan khawatir jika Anda baru saja memulai programming – saya akan menjadi panduan yang ramah, menjelaskan segala sesuatu secara langkah demi langkah. Pada akhir panduan ini, Anda akan dapat menanamkan komponen seperti seorang ahli!
Apa Itu Komponen Beranak?
Sebelum kita masuk ke detil, mari kita mengerti apa itu komponen beranak. Bayangkan Anda membangun sebuah rumah (aplikasi React Anda). Tembok, atap, dan fondasi adalah komponen utama Anda. Tetapi di dalam rumah, Anda memiliki kamar (komponen beranak) yang dapat berisi furniture (komponen beranak lagi). Struktur ini memungkinkan kita untuk menciptakan UI yang kompleks dalam cara yang mudah dikelola.
Mengapa Menggunakan Komponen Beranak?
- Reusabilitas: Buat komponen sekali, gunakan mereka berkali-kali.
- Maintainabilitas: Lebih mudah untuk memperbarui dan mengelola komponen yang kecil dan fokus.
- Readabilitas: Kode Anda menjadi lebih terorganisir dan mudah dipahami.
Sekarang, mari kita mulai membuka tangan dengan beberapa kode!
Membuat Komponen Beranak Pertama
Kita akan mulai dengan contoh yang sederhana. Bayangkan kita sedang membangun sebuah aplikasi belanja. Kita akan membuat komponen Product
yang akan berisi komponen Price
.
// Product.js
import React from 'react';
import Price from './Price';
function Product({ name, price }) {
return (
<div className="product">
<h2>{name}</h2>
<Price amount={price} />
</div>
);
}
export default Product;
// Price.js
import React from 'react';
function Price({ amount }) {
return <p className="price">${amount.toFixed(2)}</p>;
}
export default Price;
Dalam contoh ini, Product
adalah komponen induk, dan Price
berada di dalamnya. Mari kitauraikan ini:
- Kita mengimpor komponen
Price
ke dalamProduct
. - Komponen
Product
menerimaname
danprice
sebagai prop. - Kita menggunakan komponen
Price
di dalamProduct
, mengirimkan propprice
sebagaiamount
.
Sekarang, ketika kita menggunakan komponen Product
:
<Product name="Super Cool Gadget" price={19.99} />
Itu akan merender:
<div class="product">
<h2>Super Cool Gadget</h2>
<p class="price">$19.99</p>
</div>
Apakah itu menarik? Kita telah menciptakan tampilan harga yang dapat digunakan berkali-kali dalam produk mana saja!
Komponen FormattedMoney
Sekarang, mari kita buat komponen beranak yang lebih maju untuk pemformatan uang. Ini akan berguna untuk menampilkan harga dalam mata uang yang berbeda.
// FormattedMoney.js
import React from 'react';
function FormattedMoney({ amount, currency = 'USD' }) {
const formatter = new Intl.NumberFormat('id-ID', {
style: 'currency',
currency: currency,
});
return <span className="formatted-money">{formatter.format(amount)}</span>;
}
export default FormattedMoney;
// Product.js (terupdate)
import React from 'react';
import FormattedMoney from './FormattedMoney';
function Product({ name, price, currency }) {
return (
<div className="product">
<h2>{name}</h2>
<FormattedMoney amount={price} currency={currency} />
</div>
);
}
export default Product;
Mari kitauraikan apa yang terjadi di FormattedMoney
:
- Kita menggunakan API
Intl.NumberFormat
untuk memformat nomor sebagai mata uang. - Kita menetapkan mata uang default 'USD' menggunakan nilai default parameter.
- Komponen mengembalikan
span
dengan jumlah yang diformat.
Sekarang kita dapat menggunakan komponen Product
seperti ini:
<Product name="Amazing Widget" price={29.99} currency="EUR" />
Ini akan merender:
<div class="product">
<h2>Amazing Widget</h2>
<span class="formatted-money">€29.99</span>
</div>
Menarik, kan? Kita telah menciptakan komponen fleksibel dan dapat digunakan berkali-kali untuk menampilkan harga dalam mata uang yang berbeda!
Komponen FormattedDate
Mari kita buat komponen beranak lainnya untuk menampilkan tanggal yang diformat. Ini akan berguna untuk menampilkan tanggal rilis produk atau tanggal berakhir penjualan.
// FormattedDate.js
import React from 'react';
function FormattedDate({ date, format = 'long' }) {
const options = {
short: { month: 'short', day: 'numeric', year: 'numeric' },
long: { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' },
};
const formatter = new Intl.DateTimeFormat('id-ID', options[format]);
return <span className="formatted-date">{formatter.format(new Date(date))}</span>;
}
export default FormattedDate;
// Product.js (terupdate lagi)
import React from 'react';
import FormattedMoney from './FormattedMoney';
import FormattedDate from './FormattedDate';
function Product({ name, price, currency, releaseDate }) {
return (
<div className="product">
<h2>{name}</h2>
<FormattedMoney amount={price} currency={currency} />
<p>Tanggal Rilis: <FormattedDate date={releaseDate} /></p>
</div>
);
}
export default Product;
Dalam komponen FormattedDate
ini:
- Kita membuat dua opsi format: 'short' dan 'long'.
- Kita menggunakan
Intl.DateTimeFormat
untuk memformat tanggal berdasarkan format yang dipilih. - Kita parsing string tanggal input menjadi objek Date.
Sekarang kita dapat menggunakan komponen Product
yang diperbarui seperti ini:
<Product
name="Futuristic Gizmo"
price={99.99}
currency="USD"
releaseDate="2023-12-25"
/>
Ini akan merender:
<div class="product">
<h2>Futuristic Gizmo</h2>
<span class="formatted-money">$99.99</span>
<p>Tanggal Rilis: <span class="formatted-date">Senin, Desember 25, 2023</span></p>
</div>
Bagus, kan? Kita telah menciptakan komponen yang fleksibel dan dapat digunakan berkali-kali untuk menampilkan tanggal yang diformat!
Menyatukan Semua
Mari kita buat komponen ProductList
yang menggunakan semua komponen beranak kita:
// ProductList.js
import React from 'react';
import Product from './Product';
function ProductList({ products }) {
return (
<div className="product-list">
{products.map(product => (
<Product
key={product.id}
name={product.name}
price={product.price}
currency={product.currency}
releaseDate={product.releaseDate}
/>
))}
</div>
);
}
export default ProductList;
Sekarang kita dapat menggunakan komponen ProductList
seperti ini:
const products = [
{ id: 1, name: "Super Gadget", price: 49.99, currency: "USD", releaseDate: "2023-06-15" },
{ id: 2, name: "Mega Widget", price: 39.99, currency: "EUR", releaseDate: "2023-07-01" },
{ id: 3, name: "Awesome Gizmo", price: 59.99, currency: "GBP", releaseDate: "2023-08-30" },
];
<ProductList products={products} />
Ini akan merender daftar produk, masing-masing dengan harga dan tanggal yang diformat!
Kesimpulan
Selamat! Anda telah belajar tentang komponen beranak dalam React. Kita telah menciptakan komponen yang dapat digunakan berkali-kali untuk pemformatan uang dan tanggal, dan menanamkannya di dalam komponen produk. Ini hanya permulaan – kemungkinan dengan komponen beranak adalah tak terbatas!
Ingat, latihan membuat Anda sempurna. Cobalah membuat komponen beranak Anda sendiri dan lihat bagaimana mereka dapat membuat aplikasi React Anda lebih modular dan mudah dikelola.
Selamat coding, sang pengguna React masa depan! ?
Komponen | Tujuan | Prop |
---|---|---|
FormattedMoney | Menampilkan mata uang yang diformat | amount, currency |
FormattedDate | Menampilkan tanggal yang diformat | date, format |
Product | Menampilkan informasi produk | name, price, currency, releaseDate |
ProductList | Menampilkan daftar produk | products (array) |
Credits: Image by storyset