Tutorial Lengkap ReactJS
Tutorial Lengkap ReactJS
React JS adalah sebuah library yang digunakan untuk membangu user interface atau tampilan
sebuah website.
React JS menggunakan HTML, CSS, dan JavaScript dalam membangun sebuah user
interface web.
Ada banyak website yang telah menggunakan React JS dalam membangun User Interface.
Salah satu web yang populer yang menggunakan React JS adalah Tokopedia dan Traveloka.
Wappalyzer adalah salah satu extension yang digunakan untuk mengetahui teknologi apa
yang digunakan oleh sebuah website.
Setelah menginstall Node.js, cek terlebih apakah Node.js sudah terpasang di Sistem Operasi
masing-masing.
Menggunakan ReactJs harus menginstall terlebih dahulu Create Reatc App melalui NPM.
Note:
i: install
-g: global
Setelah menginstall Create React App, cek terlebih dahulu apakah sudah terpasang di Sistem
Operasi masing-masing.
Untuk memulai project ReactJs, kita harus terlebih dahulu membuat projectnya melalui
Create React App yang sudah diinstall.
Menjalankan Project
Setelah selesai membuat project, maka selanjutnya jalankan projeknya untuk melihat
hasilnya.
Akan terbuka sebuah tab di browser yang berisi projek yang sudah dijalankan.
React Developer Tools adalah sebuah extension yang digunakan untuk membantu atau
mempermudah pengembangan aplikasi web menggunakan ReactJS.
Kita akan membuat Class Component bernama Header di dalam file src/App.js
Setelah membuat Class Component Header, agar Class Component Header tersebut tampil di
browser, maka kita masukan nama Class Header tersebut ke dalam Class Component App.
Pada kode di atas, kita memasukan Class <Header/> yang berasal dari Class Component
Header ke dalam Class App.
Tujuannya agar Class Component tersebut dapat digunakan berulang kali oleh Class
Component yang lain.
Setelah membuat Class Component Header, kita akan menampilkannya ke dalam Class App.
Pertama, import terlebih dahulu class Header di dalam file src/App.js dengan
menambahkan kode: import Header from ./Header.
Setelah diimport, kita bisa menggunakan Class Component Header di dalam file
src/App.js.
Setelah React Component diimport, maka kita sudah membisa membuat sebuah Component
menggunakan Class.
Jika React Component tidak diimport, maka pembuatan Component dipastikan gagal karena
tidak ada React Component.
Namun setelah penulisan tersebut, ketika ingin membuat Component menggunakan Class,
maka pemanggilan Component harus dari Awal (React).
Pembuatan Component function sama seperti pembuatan component class, hanya saja kita
membuatnya menggunakan sebuah function.
Kode di atas kita membuat sebuah function yang disimpan di dalam kontstanta Footer.
Membuat sebuah Component Function secara terpisah sama seperti pembuat Component
Class secara terpisah.
Jangan lupa untuk mengimport terlebih dahulu React Component pada baris pertama.
Sama seperti menampilkan Component Class dari file lain, Component Function terlebih
dahulu diimport ke dalam file src/App.js
Kita juga dapat membuat sebuah function definition untuk membuat sebuah Component.
function Footer() {
return (
<div>
<h3>Halaman Footer</h3>
<h3>Component ini dibuat menggunakan Function bukan Class</h3>
</div>
);
}
pada kode di atas, kita membuat sebuah function Footer yang nantinya akan digunakan
sebagai Component Footer.
Kita bisa mengirimkan nilai ke dalam Component lalu ditampilkan menggunakan kurung
siku {}.
function Footer() {
var nama = 'Aufa';
return (
<div>
<h3>Halaman Footer</h3>
<h3>Component ini dibuat menggunakan Function bukan Class</h3>
<p>Nama saya: { nama } </p>
</div>
);
}
Pada kode di atas, saya membuat variabel nama, lalu variabel tersebut saya panggil
menggunakan kurang siku {}.
Export Component digunakan agar component bisa digunakan oleh Component yang lain.
Pada kode di atas kita mengexport Component Class Header di akhir baris.
Terdapat penulisan lain yaitu kita bisa secara langsung mengxport component pada baris
penulisan Class Component.
Pada kode di atas, kita mengexport langsung Component di saat pembuatan Class Component
Header.
Import Component
Setelah mengexport Component, kita dapat menggunakan Component yang telah diexport
dengan cara Mengimport Component atau File Component tersebut.
Pada kode di atas, saya mengimport Component Header dan Footer dari file Header.js dan
Footer.js
Setelah mengimport Component, kita sudah bisa menggunakan Component tersebut di Class
Componen App.
Materi 15: Multiple Component
Pada materi sebelumnya kita telah membahas Component Header dan Footer.
Selanjutnya kita akan membuat Component lain seperti List dan Image Component.
List Component
Pada kode di atas, kita membuat List Component dan juga menggunakan Image Component.
Image Component
Pada kode di Atas kita membuat Image Component yang digunakan di dalam List
Component.
Pada kode di di atas, kita menggunakan List Component yang sudah kita buat sebelumnya, di
mana List Component berisi Component lain yaitu Image Component.
Pada Component App di atas juga dapat disebut sebagai Multiple Component karena kita
menggunakan banyak Component di dalam Component App.
Props atau properties digunakan untuk menampung nilai yang nantinya dikirimkan ke suatu
Component.
Contoh Kasus.
Pada kode di atas, di Component Footer kita membuat dua buah nilai:
Menampilkan props
Pada File Component Footer.js, kita bisa menampilkan Props yang dikirimkan dari
App.js.
import React from 'react';// Component menggunakan Functionconst Footer =
(props) => {
return (
<div>
<h3>Halaman Footer</h3>
<h3>Component ini dibuat menggunakan Function bukan Class</h3>
<p>Nilai ini ditampilkan dari props: { props.judul } </p>
<p>Nama Saya: { props.nama } </p>
</div>
);
}export default Footer;
Pada kode di atas, kirim mengirimkan sebuah parameter props ke fungsi (anonymous
function), lalu parameter tersebut akan kita gunakan untuk mengakses variabel yang
dikirimkan dari file App.js.
Jika bingung melihat kode tersebut, mungkin ini penulisan sederhana dari function definition.
Fungsi di atas sama seperti penulisan fungsi sebelumnya, hanya saja fungsi yang sebelumnya
kita menggunakan arrow function.
Contoh Kasus:
Kita ingin menampilkan banyak gambar di dalam component list, di mana component list
akan menggunakan component image.
Kita bisa mengirimkan nilai dinamis kepada atribut src dari component image.
Component List
Pada kode di atas, kita membuat empat buah list di mana masing masing list memanggil
Component image.
Perhatikan: pada component gambar, kita mengatur props linkGambar dengan nilai yang
berbeda-beda.
Hal ini bertujuan agar Component Image akan memproses nilai atribut src yang berbeda-beda
pula.
Sekarang kita tinggal mengaturnya di Component Image agar nilai gambar yang digunakan
dinamis.
Component Image
Pada kode di atas, kita menggunakan props yang dikirimkan dari Component List.
Dengan begitu, setiap gambar yang tampil akan memanggil nilai src yang berbeda-beda,
berdasarkan yang sudah kita tentukan di Component List di atas.
State digunakan untuk menyimpan data yang nanti akan digunakan oleh Component.
Props adalah properti yang digunakan untuk menampung data di mana props akan
mengirimkan datanya ke Component.
Data yang dikirimkan oleh Props nantinya akan ditangkap di Component secara langsung
atau ditangkap melalui state.
State nanti akan digunakan untuk menampung nilai yang dikirimkan oleh Props.
App.js
Header.js
Pada kode di atas, di dalam state, kita mengambil data props lalu disimpan ke dalam properti
dataMakanan.
Terakhir kita bisa menampilkan props secara langsung atau menampilkan props yang sudah
disimpan di dalam state.
Sebaiknya data yang dikirim dari App.js disimpan ke dalam state lalu baru ditampilkan di
dalam komponen menggunakan state.
Pada materi ini, kita akan belajar bagaimana menghandle sebuah event di Reactjs.
Lalu di dalamnya kita membuat sebuah function handlePesan yang menampilkan pesan.
Kemudian pada return, kita menghandle event click, di mana ketika tag a diclick maka akan
menjalankan function handlePesan.
Pada kode di atas, kita menambahkan Component Top yang telah dibuat sebelumnya.
Kita buat terlebih dahulu sebuah method handlePesan yang menampilkan alert setelah
method Constructor.
handlePesan() {
alert('Halaman Header');
};
Handle Event
Setelah membuat method, kita akan melakukan handle event click ketika suatu element (tag
a)Materi 21: Handling Events pada Class Component
Membuat method handlePesan
Kita buat terlebih dahulu sebuah method handlePesan yang menampilkan alert setelah
method Constructor.
handlePesan() {
alert(‘Halaman Header’);
};
Handle Event
Setelah membuat method, kita akan melakukan handle event click ketika suatu element (tag
a) diclick.
render() {
return (
<div>
<h2>Component dari Class Header</h2>
<h3>{ this.state.judul }</h3>
<p>Mengakses props dari App secara langsung: { this.props.list } </p>
<p>Mengakses props dari State: { this.state.dataMakanan } </p>
<a href='/' onClick={this.handlePesan} >Halaman Header</a>
</div>
);
}
Handle Event di Component Class sama seperti meng-handle event di Component Function.
Pada kode di atas, kita membuat tag a yang memiliki event click, lalu ketika diclick akan
menjalankan method handlePesan.
Binding Method.
Binding method bertujuan agar method bisa mengakses data state atau props.
handlePesan() {
alert(this.state.judul);
};
Sebuah method bisa dikirimkan parameter yang nanti akan digunakan lebih lanjut oleh
method tersebut.
Pada kode di atas, kita mengirimkan parameter string yang berisi: Pesan dari Parameter.
Selanjutnya pada method handlePesan, buat sebuah parameter yang menghandle pesan atau
argumen tersebut.
Note:
Parameter dan Argumen sering diistilahkan dengan hal yang sama. Parameter didefinisikan
di fungsi atau methode, sedangkan argumen pada pemanggilan fungsi.
handlePesan(pesan) {
alert(pesan);
};
Pada kode di atas, kita telah membuat sebuah parameter yang nanti akan menampung sebuah
argumen.
Berikut kode lengkapnya
Lalu kirimkan sebuah event target sebagai argumen kedua dari method handlePesan.
Selanjutnya kita akan membuat sebuah parameter yang menampung event target tersebut.
handlePesan(pesan, e) {
e.preventDefault();
alert(pesan);
alert('Hai');
};
Pada kode di atas, kita membuat parameter kedua yang menampung event target.
Lalu kita memanggil method preventDefault dari event target.
Penulisan setState sama seperti halnya mengatur sebuah properti, mari kita lihat contohnya.
Kita coba membahas tentang setState saja agar tidak terlalu panjang, karena yang lainnya
sudah dibahas sebelumnya.
pada method constructor, kita mengatur state title dengan nilai ‘Menu Makanan’.
lalu pada method rubahData, kita mengatur nilai state dengan fungsi setState untuk
mengubah title menjadi ‘Pilih Makanan’.
Note:
Sebenarnya kita bisa mengubah nilai property state title secara langsung seperti ini
this.state.title = 'Pilih Makanan'.
Namun di ReactJS tidak bisa mengatur nilai property secara langsung. Seperti pesan warning
yang muncul: Do not mutate state directly. Use setState()
oleh karena itu, kita menggunakan setState untuk mengubah nilai dari property state title.
Menampilkan Main.js
Di dalam method rubahData kita mengubah nilai property state title menjadi ‘Pilih Makanan’.
Pada kode di atas, kita melakukan hal seperti biasa yaitu mengimport Component Main.js
lalu menampilkannya pada App.js di statement return.
rubahData() {
this.setState((state, props) => {
return { title: 'Pilih Makanan' };
});
}
Pada kode diatas, kita menuliskan setState menggunakan arrow function. Kode di atas
fungsinya sama seperti materi sebelumnya yaitu memberi nilai state title menjadi ‘Pilih
Makanan’.
constructor(props) {
super(props);
this.state = {
title: 'Menu Makanan',
title2: 'Menu Minuman',
}
this.rubahData = this.rubahData.bind(this);
}
Pada kode di atas, di dalam method constructor kita membuat state title2 dengan nilai ‘Menu
Minuman’.
setState
rubahData() {
this.setState((state, props) => {
return {
title: 'Pilih Makanan',
title2: 'Pilih Menu Minuman',
};
});
}
Pada method rubahData, kita mengubah nilai title2 menjadi ‘Pilih menu Minuman’.
Jika ingin mengambil properti state dari constructor, cukup menuliskan state.property saja.
rubahData() {
this.setState((state, props) => {
return {
title: state.title2,
title2: state.title,
};
});
}
Pada kode di atas, nilai properti title diubah menjadi title2 dengan memanggil state.title2
tanpa harus menuliskan keyword this.
method handleChange
Kita membuat method handleChange untuk menampilkan pesan jika nanti suatu element
terdapat perubahan value atau nilai.
handleChange() {
console.log('Data diubah');
}
Method tersebuh akan menampilkan pesan yang nanti akan dipanggil jika terjadi event
onChange.
Note: Daftarkan method handleChange ke dalam constructor.
constructor(props) {
super(props);
this.state = {
title: 'Menu Makanan',
title2: 'Menu Minuman',
}
this.rubahData = this.rubahData.bind(this);
this.handleChange = this.handleChange.bind(this);
}
event onChange.
Kita akan membuat tag input dan membuat event onChange yang memanggil method
handleChange.
Pada kode di atas, tag input ditambahkan event onChange, di mana ketika terjadi perubahan
pada kolom inputan maka jalankan method handleChange.
Pada tag input, kita akan menampilkan value atau nilai yang diinput pada kolom input.
Caranya sederhana, kita bisa memasukkan parameter event object pada method
handleChange.
handleChange(e) {
// console.log('Data diubah');
console.log(e.target.value);
}
Pada kode di atas, kita memasukkan parameter event object, lalu setelah itu kita memanggil
nilai dari event target tersebut yaitu memanggil atau menampilkan nilai tag input.
Biasanya pemberian nilai default pada tag input dengan langsung memasukkan nilai pada
atribut value.
Cara tersebut tidak salah, namun di ReactJS untuk pemberian nilai default tidak ditulis secara
hardcore atau secara langsung.
Pemberian nilai pada atribut value sebaiknya dideklarasikan properti dulu pada state, lalu
properti state tersebut dimasukkan ke atribut value.
constructor(props) {
super(props);
this.state = {
title: 'Menu Makanan',
title2: 'Menu Minuman',
inputValue: 'Aufa Billah',
}
this.rubahData = this.rubahData.bind(this);
this.handleChange = this.handleChange.bind(this);
}
Pada kode di atas, saya membuat properti inputValue dengan nilai ‘Aufa Billah’.
Cara seperti ini lebih disarankan, nilai dari atribut value sebaiknya disimpan terlebih dahulu
di dalam state.
Tujuan dari state sendiri adalah untuk menampung nilai atau data yang nanti digunakan oleh
berbagai component atau element.
Ini terjadi karena nilai dari atribut value sudah diset pada properti inputValue state.
Cara untuk mengupdate nilai properti inputValue state adalah dengan mengupdate nilai
terbaru yang terjadi pada event change lalu disimpan ke dalam properti inputValue state.
handleChange(e) {
this.setState({
inputValue: e.target.value,
});
}
Pada kode di atas, kita mengubah nilai properti inputValue dengan nilai baru yang diinput ke
dalam kolom input, sehingga nilai dari atribut value sudah berubah dengan nilai yang baru.
Comment bisa dilakukan dengan tanda //pada awal kode yang ingin dikomen.
Pada kode di atas, kita melakukan comment pada bagian import component Main.
Comment di Return
Untuk melakukan comment di dalam return dapat menggunakan tanda kurung {}pada bagian
yang ingin dikomen lalu diikuti tanda //pada bagian kode yang dikomen.
return (
<div>
<Header list='10 Daftar Makanan' />
<Main />
<Top />
<h1>Component dari Class App</h1>
{
// <List />
}
<Footer judul='Halaman Footer' nama='Aufa Billah' />
</div>
);
Pada kode di atas, kita melakukan comment pada bagian Component List.
Caranya dengan memberi komentar biasa //lalu component yang sudah di-comment harus
dibungkus dalam kurung siku {}.
handleChange(value, e) {
this.setState({
[value]: e.target.value,
});
}
Pada kode di atas, kita membuat 2 parameter yang menampung argumen pertama dan kedua.
kita mengatur properti state yang didapatkan pada argumen pertama dengan nilai yang
didapat dari tag input.
Jika terdapat tag input lain yang mengirimkan nilai, maka nilainya akan secara otomatis
terupdate pada state properti sendiri.
method componentDidMount
componentDidMount() {
console.log('Jalan: componentDidMount');
}
Kita ingin menampilkan lebih dari satu element di dalam conditonal rendering.
return(
<div>
{ this.state.statusRendering === true ? (
<div>
<h1>Selamat Datang</h1>
<h2>Hai Aufa</h2>
</div>
) : (
<div>
<h1>Selamat Tinggal</h1>
<h2>Semoga Bertemu Kembali Aufa</h2>
</div>
)
}
</div>
);
Pada kode di atas, pada kondisi true, kita menampilkan 2 buah element yang dibungkus di
dalam tag div.
method handleElement
handleElement() {
this.setState((state, props) => {
return { statusRendering: !state.statusRendering };
});
}
Pada kode di atas, kita mengubah nilai properti statusRendering menjadi nilai negasi atau
nilai kebalikannya.
pada fungsi return, buat sebuah tombol yang menjalankan method handleElement.
return(
<div>
{ this.state.statusRendering === true ? (
<div>
<h1>Selamat Datang</h1>
<h2>Hai Aufa</h2>
</div>
) : (
<div>
<h1>Selamat Tinggal</h1>
<h2>Semoga Bertemu Kembali Aufa</h2>
</div>
)
}
<button onClick={ this.handleElement }>Change</button>
</div>
);
Pada kode di atas, pada tag button kita menjalankan method handleElement.
Pada method handleElement kita mengubah nilai properti statusRendering menjadi negasi.
Terakhir, pada method rendering akan ditampilkan conditional sesuai nilai state properti
statusRendering.
constructor(props) {
super(props);
this.state = {
title: 'Menu Makanan',
title2: 'Menu Minuman',
inputValue: '',
inputKota: '',
namaMakanan: [
{
nama: 'Mie Ayam',
harga: 10000
},
{
nama: 'Bakso',
harga: 12000
},
{
nama: 'Soto Ayam',
harga: 15000
},
],
}
this.rubahData = this.rubahData.bind(this);
this.handleChange = this.handleChange.bind(this);
}
Pada kode di atas, kita membuat property namaMakanan yang berisi array of object.
Selanjutnya kita ingin mengakses properti state namaMakanan menggunakan method map.
return(
<div>
<h3>{ this.state.title }</h3>
<h2>{ this.state.title2 }</h2>
<button onClick={ this.rubahData }>Ubah Makanan</button><br/><br/>
<input type='text' value={ this.state.inputValue } placeholder='makanan'
onChange={ (e) => this.handleChange('inputValue', e) } />
<input type='text' value={ this.state.inputKota } placeholder='kota'
onChange={ (e) => this.handleChange('inputKota', e) }
/>{this.state.namaMakanan.map((value, index) => {
return (
<div key = {index+1}>
<p>No {index}</p>
<p>Nama {value.nama}</p>
<p>Harga {value.harga}</p>
</div>
);
})};
</div>
);
pada kode di atas, kita menjalanka method map untuk mengakses value dan index dari
properti namaMakanan.
<Main namaMakanan = {
[
{
nama: 'Mie Ayam',
harga: 10000
},
{
nama: 'Bakso',
harga: 12000
},
{
nama: 'Soto Ayam',
harga: 15000
},
]
} />
Pada Component Main di dalam Component App, kita membuat data props yang berisi data
array of object.
Seperti materi sebelumnya, pada kode di atas kita cukup menggantikan keyword state
menjadi props karena yang kita panggil adalah data dari props.
const namaMakanan = [
{
nama: 'Mie Ayam',
harga: 10000
},
{
nama: 'Bakso',
harga: 12000
},
{
nama: 'Soto Ayam',
harga: 15000
},
];
Pada method return, panggil constanta makanan dan tampilkan menggunakan method map.
Pada kode di atas, kita menampilkan nilai dari konstanta namaMakanan menggunakan
method Map.
Buka file Food.js, dan buat konstanta namaMakanan yang berisi array of object.
const namaMakanan = [
{
nama: 'Mie Ayam',
harga: 10000
},
{
nama: 'Bakso',
harga: 12000
},
{
nama: 'Soto Ayam',
harga: 15000
},
];export default namaMakanan;
Pada kode di atas kita membuat konstanta namaMakanan yang berisi data array of object.
Import di Main.js
Selanjutnya, kita import namaMakanan yang sudah kita export pada file Food.js tadi.
Pada kode di atas, kita menampilkan konstanta makanan yang sudah diimport dari file
Food.js menggunakan method Map.
Buat Refs.
Buat property textInput di dalam constructor yang berisi object createRef.
this.textInput = React.createRef();
Akses Refs.
pada tag input, tambahkan atribut refs yang memiliki nilai textInput.
Lalu terakhir, setelah dapat mengakses refs, kita mencoba untuk memberikan event focus
pada tag input.
handleInput() {
this.setState({value: ''});
this.textInput.current.focus();
}
Kode Lengkapnya:
method handleChange.
pada tag input di atas, kita belum membuat method handleChange yang akan menangani data
input dinamis.
handleChange(e) {
this.setState({value: e.target.value})
}
this.handleChange = this.handleChange.bind(this);
Event onChange
Tambahkan event onChange pada tag input yang menjalankan method handleChange.
Kode lengkapnya
import React, {Component} from 'react';class CustomInput extends Component
{
constructor(props) {
super(props);
this.state = {
value: 'Input Pertama',
};
this.handleInput = this.handleInput.bind(this);
this.handleChange = this.handleChange.bind(this);
this.textInput = React.createRef();
}handleInput() {
this.setState({value: ''});
this.textInput.current.focus();
}handleChange(e) {
this.setState({value: e.target.value})
}render() {
return(
<div>
<input type='text' value={this.state.value} ref={this.textInput}
onChange={(e) => this.handleChange(e)} />
<button onClick={this.handleInput} >Kirim</button>
</div>
);
}
}export default CustomInput;
Penulisa CSS secara inline ditulis di dalam kurung kurawal {}yang berisi object.
Pada kode di atas, kita memberikan CSS secara inline yang nilainya tersebut merupakan
sebuah object yang dibungkus di dalam kurung kurawal.
Note:
Penulisan property yang terdiri lebih dari 1 suku kata harus ditulis secara camelCase.
Contoh:
Buat variabel judul yang berisi properti dan nilai properti css.
const judul = {
color: 'red',
backgroundColor: 'blue',
marginTop: '10px',
};
Tambahkan atribut style pada element, lalu panggil variabel judul yang berisi property css.
Namun penulisan seperti ini yang disebut sebagai penulisan internal di ReactJS, mungkin
berbeda ketika menulis CSS Internal seperti biasa. Di mana kita menulis tag style yang
didalamnya terdapat selector yang diberi berbagai property.
Note:
Jika kode css yang ditulis sedikit, lebih baik menggunakan penulisan secara inline
dibandingkan penulisan secara internal.
Penulisan CSS Eksternal di ReactJs sama seperti penulisan CSS biasa, kita hanya perlu
mengimport file CSS Eksternal saja menggunakan keyword importdiikuti nama file css.
Import Header.css
Setelah membuat header.css, kita akan mengimport file header.css ke dalam Header.js agar
bisa digunakan.
import './header.css';
Styling
Beri sebuah id judulH2 ke element h2.
#judulH2 {
color: white;
background-color: blue;
}
return(
<div>
{ this.state.statusRendering === true ? (
<div>
<h1 style={{color: 'DodgerBlue', backgroundColor: 'green'}}
>Selamat Datang</h1>
<h2 id='judulH2' >Hai Aufa</h2>
</div>
) : (
<div>
<h1>Selamat Tinggal</h1>
<h2>Semoga Bertemu Kembali Aufa</h2>
</div>
)
}
<button onClick={ this.handleElement }>Change</button>
</div>
);
Penulisan atribut class di dalam ReactJS bukan ditulis menggunakan class, namun ditulis
menggunakan className.
Buat atribut className yang berisi nilai subJudul pada element h2.
Jika ingin diberikan styling, maka kita tinggal memanggil saja selector className tersebut
seperti selector class dengan menggunakan tandatitik ..
.subJudul {
color: green;
background-color: yellow;
}
Pemanggilan selector className sama seperti pemanggilan selector class yaitu dengan
menggunakan tanda titik dan diikuti nilai class atau className.
Lalu pindahkan seluruh isi file dan folder src/components ke dalam folder home.
Install react-router-dom
install react-router-dom
Cek pada file package.json bahwa react-router-dom telah ditambahkan yang berarti berhasil
diinstall.
appRouter
buat file appRouter.js.
kita membuat routing default yaitu / yang akan menampilkan component App.
index.js
Ubah render ke AppRouter.
Selanjutnya buat yaitu routing contact yang akan menampilkan component contact.
Kita membuat 2 buah navigasi routing yang mengarah ke routing home dan contact yang
telah didefinisikan sebelumnya.
Kode lengkapnya:
create-react-app hello-bootstrap
Import CSS
Gunakan CSS
agar bisa menggunakan boostrap, tambahkan link css bootstrap di file index.html pada folder
public.
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.
css" integrity="sha384-
ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
crossorigin="anonymous">
Test Bootstrap
Buka file App.js, lalu buat container dan tag h1.
Membuat layout menggunakan bootstrap di ReactJS sama seperti menggunakan layout biasa,
namun kita menggunakan component dari React Bootstrap.
<Container>
<Row>
<Col>1 of 2</Col>
<Col>2 of 2</Col>
</Row>
<Row>
<Col>1 of 3</Col>
<Col>2 of 3</Col>
<Col>3 of 3</Col>
</Row>
</Container>
Media
Membuat media.
<Row>
<Col>
<Media>
<img
width={64}
height={64}
className="mr-3"
src="https://s3-ap-southeast-
1.amazonaws.com/niomic/img/sample/sate.png"
alt="Generic placeholder"
/>
<Media.Body>
<h5>Media Heading</h5>
<p>
Makanan Sate
</p>
</Media.Body>
</Media>
</Col>
<Col>
<Media>
<img
width={64}
height={64}
className="mr-3"
src="https://s3-ap-southeast-
1.amazonaws.com/niomic/img/sample/sate.png"
alt="Generic placeholder"
/>
<Media.Body>
<h5>Media Heading</h5>
<p>
Makanan Sate
</p>
</Media.Body>
</Media>
</Col>
</Row>
<Breadcrumb>
<Breadcrumb.Item href='/'>Home</Breadcrumb.Item>
<Breadcrumb.Item href='/'>Library</Breadcrumb.Item>
<Breadcrumb.Item active>Profile</Breadcrumb.Item>
</Breadcrumb>
<Button variant='primary'>Tombol</Button>
<ButtonGroup className='ml-2'>
<Button>1</Button>
<Button>2</Button>
<Button>3</Button>
<Button>4</Button>
<Button>5</Button>
</ButtonGroup>
<Carousel>
<Carousel.Item>
<img className='d-block w-100' src='https://s3-ap-southeast-
1.amazonaws.com/niomic/img/sample/travel1.jpeg' alt='1' />
<Carousel.Caption>
<h3>First slide label</h3>
<p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
</Carousel.Caption>
</Carousel.Item>
<Carousel.Item>
<img className='d-block w-100' src='https://s3-ap-southeast-
1.amazonaws.com/niomic/img/sample/travel2.png' alt='1' />
<Carousel.Caption>
<h3>First slide label</h3>
<p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
</Carousel.Caption>
</Carousel.Item>
<Carousel.Item>
<img className='d-block w-100' src='https://s3-ap-southeast-
1.amazonaws.com/niomic/img/sample/travel3.jpeg' alt='1' />
<Carousel.Caption>
<h3>First slide label</h3>
<p>Nulla vitae elit libero, a pharetra augue mollis interdum.</p>
</Carousel.Caption>
</Carousel.Item>
</Carousel>
<Dropdown>
<Dropdown.Toggle variant='success'>
Dropdown Button
</Dropdown.Toggle>
<Dropdown.Menu>
<Dropdown.Item>Action</Dropdown.Item>
<Dropdown.Item>Action Action</Dropdown.Item>
<Dropdown.Item>Something</Dropdown.Item>
</Dropdown.Menu>
</Dropdown>
<Form>
<Form.Group>
<Form.Label>Nama</Form.Label>
<Form.Control type="text" placeholder="Masukan Nama" />
</Form.Group>
<Form.Group>
<Form.Label>Email</Form.Label>
<Form.Control type="email" placeholder="Masukan Email" />
</Form.Group>
</Form>
<InputGroup className='mb-3'>
<InputGroup.Prepend>
<InputGroup.Text>@</InputGroup.Text>
</InputGroup.Prepend>
<FormControl placeholder='username'></FormControl>
</InputGroup>
<Image src='https://s3-ap-southeast-
1.amazonaws.com/niomic/img/sample/foodsmall.jpg' alt='gambar' roundedCircle
/>
<Figure>
<Figure.Image src='https://s3-ap-southeast-
1.amazonaws.com/niomic/img/sample/nasipadang.jpg' alt='nasi padang'
width='200' />
<Figure.Caption>Lorem ipsum set dollar</Figure.Caption>
</Figure>
<Jumbotron>
<h1>Hello World</h1>
<p>
This is a simple hero unit, a simple jumbotron-style component for
calling extra attention to featured content or information.
</p>
<Button variant='primary'>Learn More</Button>
</Jumbotron>
<ListGroup>
<ListGroup.Item>Nasi Goreng</ListGroup.Item>
<ListGroup.Item>Mie Goreng</ListGroup.Item>
<ListGroup.Item>Nasi Uduk</ListGroup.Item>
</ListGroup>
<Modal.Dialog>
<Modal.Header>
<Modal.Title>Modal Title</Modal.Title>
</Modal.Header>
<Modal.Body>
<p>Modal Body Here</p>
</Modal.Body>
<Modal.Footer>
<Button>Close</Button>
</Modal.Footer>
</Modal.Dialog>
<Nav>
<Nav.Item>
<Nav.Link>Home</Nav.Link>
</Nav.Item>
<Nav.Item>
<Nav.Link>About</Nav.Link>
</Nav.Item>
<Nav.Item>
<Nav.Link>Contact</Nav.Link>
</Nav.Item>
</Nav>
const popover = (
<Popover title='informasi'>This is popover</Popover>
);<OverlayTrigger trigger='click' placement='right' overlay={popover}>
<Button variant='success'>Munculkan Overlay</Button>
</OverlayTrigger>
<Pagination size='lg'>
<Pagination.Item>1</Pagination.Item>
<Pagination.Item>2</Pagination.Item>
<Pagination.Item>3</Pagination.Item>
</Pagination>
<Table>
<thead>
<tr>
<th>No</th>
<th>Nama</th>
<th>Menu</th>
<th>Harga</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Nasi Goreng</td>
<td>Makanan</td>
<td>20.000</td>
</tr>
<tr>
<td>2</td>
<td>Mie Goreng</td>
<td>Makanan</td>
<td>15.000</td>
</tr>
</tbody>
</Table>
<Tabs>
<Tab eventKey='home' title='home'>
<p>
Halaman home
</p>
</Tab>
<Tab eventKey='about' title='about'>
<p>
Halaman about
</p>
</Tab>
<Tab eventKey='contact' title='contact'>
<p>
Halaman contact
</p>
</Tab>
</Tabs>
constructor(props) {
super(props);
this.state = {
buka: true,
};
}
state ini bertujuan untuk menampung nilai dari hasil collapse nanti.
Sekian tutorial ReactJS yang bisa digunakan untuk membangun user interface website.