Apa itu React JS?
React JS adalah library JavaScript yang biasa digunakan saat membangun UI suatu website atau aplikasi web. Jadi, React JS bisa dianggap seperti perpustakaan yang berisi berbagai kode JavaScript yang sudah tertulis (pre-written). Anda tinggal mengambil kode yang ingin Anda gunakan. Sehingga, ini membuat proses coding menjadi lebih efisien.
Sebentar, apakah Anda belum tau apa itu JavaScript? Jika belum, JavaScript adalah bahasa pemrograman yang dapat membantu Anda membuat konten web yang dinamis, seperti form, slideshow, atau konten interaktif lainnya.
Dengan JavaScript, Anda dapat membuat tampilan website yang lebih menarik. Nah, inilah mengapa library ini berguna untuk membangun UI, karena pengaplikasian kode JavaScript di website Anda bisa menjadi lebih mudah.
Oh ya, library ini juga bersifat open source. Artinya, isinya akan terus berkembang karena semua orang bebas memodifikasi kode di dalamnya. Berkat kegunaannya, React JS adalah salah satu library yang sangat populer. Saat ini ada lebih dari satu juta website yang sudah menggunakannya. Bahkan website-website terkenal seperti bbc.com, paypal.com, dan yahoo.com juga menggunakannya.
Apa Kelebihan React JS?
Di atas, kita sudah membahas sebagian fungsi dari library ini, yaitu untuk mempermudah penggunaan JavaScript. Selain itu, ada dua fitur tambahan yang menjadi keunggulannya yaitu JSX dan Virtual DOM.
Kedua fitur ini yang seringkali disebut jika React JS sedang dibandingkan dengan library JavaScript yang lain – seperti Inferno JS atau Preact. Oleh karena itu, mari kita lihat kedua fitur tersebut secara lebih detail!
JSX
JSX adalah extension syntax JavaScript yang memungkinkan Anda untuk memodifikasi Document Object Model (DOM) dengan kode bergaya HTML. Untuk mengetahui fungsi JSX dengan lebih jelas, Anda perlu tahu tentang DOM terlebih dahulu.
DOM adalah application programming interface (API) yang berfungsi untuk mengatur struktur halaman web. Nah, untuk menambah konten dinamis ke dalam halaman web, developer mesti memodifikasi DOM.
Dengan kata lain, JSX akan mempermudah Anda untuk menambah konten dinamis. Karena extension ini dapat membantu Anda untuk memasukkan syntax bergaya HTML ke dalam DOM. Akan tetapi, JSX bukanlah HTML. Mungkin bahasa sederhananya seperti ini: JSX terlihat seperti HTML, tapi memiliki fungsi seperti JavaScript.
Selain itu, Anda juga bisa menggunakan JSX di berbagai browser. Karena JSX cocok dengan semua platform browser modern – seperti Chrome atau Firefox.
Virtual DOM
Ketika developer mengupdate DOM dengan menggunakan JSX, React JS akan membuat Virtual DOM, yaitu salinan dari DOM asli yang ingin diupdate. Nah, Virtual DOM berguna untuk melihat bagian dari DOM asli yang berubah. Contohnya, ketika pengguna website mengklik tombol like atau comment, tentu yang perlu berubah hanya bagian like dan comment saja, bukan?
Ketika menemukan bagian yang perlu diubah, React JS akan mengubah bagian itu saja. Jadi, pengguna tidak perlu reload satu halaman untuk melihat perubahannya. Hal ini dapat berpengaruh terhadap performa website. Karena setiap perubahan hanya dilakukan pada bagian yang diperlukan saja.
Tanpa Virtual DOM, website Anda akan menggunakan HTML untuk update DOM. Sehingga, seluruh DOMnya mesti direload untuk menampilkan perubahan di satu bagian – seperti mengklik tombol like atau menambahkan komentar.
Kode HTML
Pada pembahasan Kali ini Kita akan coba Membuat Tampilan Penjuala Pre-Order pada ReactJS, juga akan memakai CSS dan JS.
Selanjutnya buat file dengan nama penjualanPreOrder.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Hello Bulma!</title>
<!-- REACT LIBRARY-->
<script src="https://unpkg.com/react@15.5.4/dist/react.js"></script>
<!-- REACT DOM LIBRARY-->
<script src="https://unpkg.com/react-dom@15.5.4/dist/react-dom.js"></script>
<!--BABEL LIBRARY-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="./public/style/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css" integrity="sha512-YWzhKL2whUzgiheMoBFwW8CKV4qpHQAEuvilg9FAn5VJUDwKZZxkJNuGM4XkWuk94WCrrwslk8yWNGmY1EduTA==" crossorigin="anonymous" referrerpolicy="no-referrer">
<script src="./public/script/script.js"></script>
</head>
<body>
<div id="app"></div>
<script type="text/babel">
class Hello extends React.Component {
render() {
return (
<div>
<nav className="navbar navigasi" role="navigation" aria-label="main navigation">
<div className="navbar-brand">
<a className="navbar-item" href="#">
<img src="./image/user.png" className="avatar" width="40" height="40" alt=""></img>
<h2 className="title is-size-3-desktop is-size-5-mobile pl-2 green">Ridho Ganteng</h2>
</a>
<a role="button" className="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navbarBasicExample">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>
<div id="navbarBasicExample" className="navbar-menu">
<div className="navbar-end">
<a className="navbar-item">
Dashboard
</a>
<a className="navbar-item">
Belanja
</a>
<a className="navbar-item">
Penjualan
</a>
<a className="navbar-item">
Laporan
</a>
</div>
</div>
</nav>
<div className="columns is-mobile my-5">
<div className="column has-text-centered divi">
<a href="./index.html" className="is-size-3-desktop gray">Langsung</a>
</div>
<div className="column has-text-centered">
<a href="./penjualanPreOrder.html" className="is-size-3-desktop active">Pre Order</a>
</div>
</div>
<div className="block my-5 tp-border">
<div className="list-transaksi is-flex is-align-items-center is-justify-content-space-between px-5 mt-3 pb-3 btm-border">
<h3 className="is-size-5-mobile is-size-3-desktop" >Transaksi</h3>
<div className="aksi buttons are-small">
<button className="button is-rounded bg-green white">Ubah</button>
<button className="button is-rounded bg-green white">Detail</button>
</div>
</div>
<div className="list-transaksi is-flex is-align-items-center is-justify-content-space-between px-5 mt-3 pb-3 btm-border">
<h3 className="is-size-5-mobile is-size-3-desktop" >Transaksi</h3>
<div className="aksi buttons are-small">
<button className="button is-rounded bg-green white">Ubah</button>
<button className="button is-rounded bg-green white">Detail</button>
</div>
</div>
<div className="list-transaksi is-flex is-align-items-center is-justify-content-space-between px-5 mt-3 pb-3 btm-border">
<h3 className="is-size-5-mobile is-size-3-desktop" >Transaksi</h3>
<div className="aksi buttons are-small">
<button className="button is-rounded bg-green white">Ubah</button>
<button className="button is-rounded bg-green white">Detail</button>
</div>
</div>
</div>
</div>
);
}
}
ReactDOM.render(<Hello/>, document.getElementById("app"));
</script>
</body>
</html>
Kode CSS
Lalu buat file dengan nama style.css
.bg-green{
background-color : green;
}
.white{
color : white;
}
.gray{
color : gray;
}
.green {
color : green;
}
.navbar-item {
color : green;
font-size: medium;
}
.navbar-end .navbar-item:hover {
color: white;
background-color : green;
border-radius: 50px;
}
.navigasi {
padding:10px 20px;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}
.bg-green {
background-color: green;
}
.navbar-brand .navbar-item img {
max-height: 50px;
background-color: green;
border-radius: 50%;
}
.divi {
border-right: 2px solid gray;
}
.active {
color: green;
}
div.aksi .button:hover {
color: white;
}
.btm-border {
border-bottom: 2px solid green;
}
.tp-border {
border-top: 2px solid green;
}
.masukan {
width: 80
}
form.form{
max-width: 1000px;
}
.hscroll {
overflow-x: auto;
padding : 10px;
margin: 10px;
}
Kode JS
Kemudian buat file dengan nama script.js
document.addEventListener('DOMContentLoaded', () => {
// Get all "navbar-burger" elements
const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);
// Check if there are any navbar burgers
if ($navbarBurgers.length > 0) {
// Add a click event on each of them
$navbarBurgers.forEach( el => {
el.addEventListener('click', () => {
// Get the target from the "data-target" attribute
const target = el.dataset.target;
const $target = document.getElementById(target);
// Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
el.classList.toggle('is-active');
$target.classList.toggle('is-active');
});
});
}
});
Output
Komentar
Posting Komentar