Pengenalan React JS
A. Pengenalan React JS
React JS adalah salah satu framework javascript untuk membuat sebuah User Interface
(UI) pada sebuah aplikasi web. React JS ini dibuat dan dikembangkan oleh Facebook.
Dengan menggunakan React JS, kita dapat membuat sebuah komponen UI sendiri yang
bersifat re-usable atau dapat digunakan secara berulang-ulang.
B. Keunggulan React JS
1. Mudah dipelajari dan mudah digunakan
Persyaratan untuk mempelajari ReactJS adalah cukup mengetahui dasar-dasar
JavaScript, karena konsep-konsep yang digunakan di JavaScript sama dengan React
2. Fleksibel
Hanya dengan belajar satu library saja, yaitu ReactJS, kita dapat membuat aplikasi Web,
Mobile, dan Desktop
3. Eifisien dan cepat
4. Scalable project
5. JSX(Javascript + HTML = JSX)
React menggunakan JSX yaitu JavaScript Syntax XML. JSX membolehkan penulisan
HTML di dalam JavaScript
6. Reusable Component
7. SEO (Search Engine Optimization) friendlyTidak dibutuhkan trik apapun agar aplikasi
web yang dibuat dengan react dapat ter-index oleh mesin pencari dengan mudah
C. Instalasi React JS
a. Download NPM (Node Package Manager) yang include dalam Node JS melalui link
berikut ini https://nodejs.org/en/download/.
b. Lakukan instalasi file yang telah didownload, untuk mengecek keberhasilan instalasi,
buka command prompt dan ketikkan perintah node -v untuk mengecek versi dari Node
JS dan perintah npm -v untuk mengecek versi dari NPM.
c. Setelah itu jalankan perintah npm install -g create-react-app .
d. Untuk instalasi React JS, buat folder sebagai tempat penyimpanan project, lalu arahkan
direktori pada cmd ke folder yang telah dibuat. Contoh saya akan membuat folder
project react ini pada direktori D:\reactJS\, arahkan direktori pada cmd ke folder
project dengan cara ketikkan cd D:\reactJS lalu tekan enter. Ketikkan perintah
create-react-app react1 (react1 adalah nama project pertama kita, silahkan jika ingin
mengganti nama projek). Tunggu sampai proses instalasi selesai.
e. Setelah proses pembuatan project selesai, silahkan jalankan project yang telah dibuat
dengan menjalankan perintah npm start.
f. Output default yang dihasilkan.
Browser
F. Modifikasi App.js
Buka file App.js pada folder src. Lalu ganti kode program menjadi seperti berikut ini.
1. import React, {Component} from 'react';
2. import './App.css';
3.
4. class App extends Component {
5. render(){
6. return (
7. <div className="App">
8. <h3>Ini Project Pertama React JS</h3>
9. <p>Belajar React JS itu mudah</p>
10. </div>
11. );
12. }
13. }
14.
15. export default App;
Penjelasan:
- Pertama kita lakukan import dari library react dan file App.css
- Kita membuat class dengan nama App. Nama App adalah nama elemen yang kita buat
dan kita render pada file HTML.
- Di dalam class App terdapat function render yang berfungsi untuk render elemen yang
ada didalamnya. Di dalam fungsi render inilah kita akan menampilkan dan
menambahkan elemen-elemen yang lain sesuai dengan kebutuhan.
- Export default App berarti elemen dengan nama App siap untuk diload dan
ditampilkan.
Jika kita simpan file App.js di atas, maka output yang dihasilkan adalah sebagai berikut.
.judul{
color: maroon;
font-family: Tahoma;
font-size: 25px;
}
.subJudul{
color: navy;
font-family: serif;
font-size: 15px;
}
- Setelah membuat style, kita panggil file tersebut pada file index.html pada folder
public. Pemanggilan file css sama seperti biasanya dengan diletakkan di dalam tag
<head></head>dan menggunakan tag <link> yaitu
<link rel="stylesheet" href="style.css">
- Kemudian kita coba memanggil selector yang telah dibuat pada component di App.js
dengan memodifikasi script sebelumnya seperti berikut ini.
<div className="App">
<h3 className="judul">Ini Project Pertama React JS</h3>
<p className="subJudul">Belajar React JS itu mudah</p>
</div>
Output:
import 'bootstrap/dist/css/bootstrap.min.css';
import $ from 'jquery';
import Popper from 'popper.js';
import 'bootstrap/dist/js/bootstrap.bundle.min';
- Modifikasi elemen yang ada pada function render sehingga menjadi seperti berikut ini.
import React, {Component} from 'react';
import './App.css';
class App extends Component {
render(){
return (
<div className="App container">
<div className="alert alert-info">
<h3 className="text-danger">Ini Project Pertama React JS</h3>
<p>Belajar React JS itu mudah</p>
<button className="mr-1 btn btn-success">Setuju</button>
<button className="btn btn-info">Iya Dong</button>
</div>
</div>
);
}
}
export default App;
import React, {Component} from 'react';
class Alert extends Component {
render(){
return (
<div className="alert alert-success">
<h4>Info</h4>
Belajar React JS itu menyenangkan
</div>
);
}
}
export default Alert;
Penjelasan:
Pada file Alert.js, kita membuat sebuah element baru dengan nama Alert yang di dalam
fungsi render terdapat element pembuatan alert menggunakan bootstrap.
- Modifikasi file App.js sehingga menjadi seperti berikut ini.
import React, {Component} from 'react';
import './App.css';
import Alert from './Components/Alert';
// import element Alert yang telah dibuat
class App extends Component {
render(){
return (
<div className="App container col-sm-6">
<Alert />
<Alert />
<Alert />
</div>
);
}
}
export default App;
Penjelasan:
Pada file App.js, terdapat perintah import Alert from './Components/Alert'; yang
digunakan untuk mengimport elemen yang telah dibuat pada file Alert.js. Pada fungsi
render di class App, terdapat pemanggilan elemen dengan tag <Alert /> yang akan
merender elemen pada file Alert.js. Output hasil dari perubahan yang kita buat adalah
sebagai berikut.
import React, {Component} from 'react';
class Alert extends Component {
render(){
return (
<div className={"alert alert-" + this.props.type}>
<h4>{this.props.header}</h4>
{this.props.children}
</div>
);
}
}
export default Alert;
Penjelasan:
Value dari props diambil dari atribut saat elemen di panggil. Pada elemen Alert ini
terdapat 3 jenis property yang dikenali yaitu “type”, “header”, dan “children”. Untuk
mengakses value dari props menggunakan {this.props.nama_props}.
- Pada file App.js, modifikasi pada function render sehingga seperti berikut ini.
// berada pada function render
return (
<div className="App container col-sm-6">
<Alert type="danger" header="Fatal Error">
Ini adalah alert dengan tipe danger
</Alert>
<Alert type="success" header="Berhasil">
Ini adalah alert dengan tipe success
</Alert>
<Alert type="warning" header="Warning">
Ini adalah alert dengan tipe warning
</Alert>
</div>
);
Penjelasan:
Pada saat pemanggilan elemen <Alert> menggunakan tambahan atribut yaitu “type”
dan “header”. Sedangkan di dalam elemen <Alert> menyisipkan string sebagai elemen
child dari Alert.
Output dari perubahan dan tambahan yang telah dilalui adalah sebagai berikut.
Output Custom Element dengan Props
import React, {Component} from 'react';
class Media extends Component {
render(){
return (
<div className="media my-3">
<img src={process.env.PUBLIC_URL+"/image/"+this.props.image}
className="mr-3" alt="media" width="100" />
<div className="media-body text-left">
<h5 className="mt-0">{this.props.title}</h5>
{this.props.children}
</div>
</div>
);
}
}
export default Media;
Penjelasan:
Pada class Media tersebut mendefinisikan 3 jenis prop yaitu “image”, “title”, dan
“children”. process.env.PUBLIC_URL digunakan untuk mendefinisikan path folder
public dari project react. Jadi elemen Media ini sebagai kerangka dari beberapa elemen
di dalamnya.
- Pada file App.js, jangan lupa untuk mengimport elemen Media seperti halnya elemen
Alert sebelumnya.
- Di dalam fungsi render pada App, panggil elemen Media seperti berikut ini.
<Media image="react.png" title="React JS">
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus
scelerisque ante sollicitudin. Cras purus odio, vestibulum
in vulputate at, tempus viverra turpis
</Media>
<Media image="angular.png" title="Angular JS">
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus
scelerisque ante sollicitudin. Cras purus odio, vestibulum
in vulputate at, tempus viverra turpis
</Media>
Penjelasan:
Pada saat elemen Media dipanggil, terdapat 2 atribut di dalamnya yaitu “image” untuk
menunjukkan nama file yang disimpan pada folder public/image/ dan atribut “title”
untuk menentukan judul dari setiap elemen Media.
Output dari elemen Media di atas adalah seperti berikut ini.
Output Elemen Media
L. Membuat Elemen dengan State dan Props
- Buka file App.js, tambahkan fungsi constructor() di dalam class App seperti berikut ini.
constructor(){
super();
this.state = {
type: "danger",
header: "Fatal Error",
content: "ini content dari alert"
}
}
Penjelasan:
Constructor adalah fungsi yang pertama kali di panggil saat sebuah class dilakukan
proses instance. Berdasarkan fungsi constructor di atas, terdapat pemanggilan fungsi
super() yang menrujuk pada constructor super class.
Setelah itu terdapat pendefinisian state pada class App yang di dalamnya terdapat 3
state, yaitu “type”,”header”, dan “content”. Tiga state tersebut akan diterapkan pada
elemen <Alert>.
- Pada pemanggilan elemen <Alert> pada fungsi render() terdapat perubahan dalam
pengisian atribut. Modifikasi pemanggila elemen Alert menjadi seperti berikut ini.
<Alert type={this.state.type} header={this.state.header}>
{this.state.content}
</Alert>
Penjelasan:
Nilai atribut pada elemen Alert diisi berdasarkan nilai dari state yang telah dibuat
sebelumnya. Untuk memanggil state menggunakan {this.state.nama_state}.
- Mari kita coba membuat form control untuk mengubah style dan isi dari Alert yang telah
dibuat. Tambahkan elemen berikut ini tepat dibawah elemen <Alert>.
1. <hr />
2. <h4>Alert Control</h4>
3. <b className="text-left">Tipe Alert</b>
4. <select className="form-control" name="type" value={this.state.type}
5. onChange={this.changeTypeAlert}>
6. <option value="success">Success</option>
7. <option value="warning">Warning</option>
8. <option value="danger">Danger</option>
9. <option value="info">Info</option>
10. </select>
11. <b className="text-left">Header Alert</b>
12. <input
13. type="text" name="header" className="form-control" value={this.state.header}
14. onChange={this.changeHeaderAlert} />
15. <b className="text-left">Content Alert</b>
16. <input
17. type="text" name="content" className="form-control" value={this.state.content}
18. onChange={this.changeContentAlert} />
19.
1. // fungsi untuk mengubah tipe
2. changeTypeAlert = (event) =>{
3. this.setState({type: event.target.value});
4. }
5. // fungsi untuk mengubah header
6. changeHeaderAlert = (event) => {
7. this.setState({header: event.target.value});
8. }
9. // fungsi untuk mengubah content
10. changeContentAlert = (event) => {
11. this.setState({content: event.target.value});
12. }
Penjelasan:
Untuk mengubah nilai dari state menggunakan perintah seperti berikut ini
this.setState({nama_state: value_state});
Output dari hasil pembuatan elemen dengan state dan prop adalah sebagai berikut.
Output Pembuatan Elemen dengan Props dan State