- Fork repository ini ke dalam personal github kalian masing-masing
- Clone repository hasil fork tersebut ke dalam local / komputer kalian
- Pindah ke folder hasil clone di local kalian.
- Check remote url kalian, make sure bahwa destination url nya ke username github kalian dengan cara
git remote -v
npm install
- Kerjakan tugas sesuai dengan instruksi yang ada.
- Buat pull request dari repository yang ada di dalam github kalian.
- Make sure pada compare perubahan,
- base repository : tech4impact-group5-6/ta-react-basic
- base : master
- head repository : <username_kalian>/ta-react-basic
- compare : master (sesuaikan dengan branch yang kalian gunakan untuk mengerjakan task ini)
- Lalu create.
- (optional) Kalian bisa request
reviewer
keRizkyMaulita
untuk bisa langsung mendapat notif untuk mereview tugas kalian.
Kalian juga dapat melihat cara pull request di link ini
Kamu diminta untuk menampilkan daftar film yang telah disediakan menggunakan ReactJS, berikut adalah langkah-langkah pengerjaannya:
- Buatlah file
MovieCard.js
pada direktorisrc
- Buatlah sebuah Component menggunakan
class
dengan namaMovieCard
- Gunakan kode yang ada pada
App.js
untuk digunakan pada saat membuat componentMovieCard
pada classcard
- Kemudian hapus kode yang berada di dalam/di bawah class
daftar-anime
pada fileApp.js
. - Component
MovieCard
akan menerima1 props
dengan namamovie
, yang manaprops
tersebut berfungsi untuk menampung informasimovie
apa yang akan ditampilkan, berikut adalah contoh dari data yang akan kita gunakan:{ mal_id: 5114, rank: 1, title: "Fullmetal Alchemist: Brotherhood", url: "https://myanimelist.net/anime/5114/Fullmetal_Alchemist__Brotherhood", image_url: "https://cdn.myanimelist.net/images/anime/1223/96541.jpg?s=faffcb677a5eacd17bf761edd78bfb3f", type: "TV", episodes: 64, start_date: "Apr 2009", end_date: "Jul 2010", members: 2649743, score: 9.16 },
- ubah data-data berikut pada file
MovieCard.js
:img[src]
=> url dari gambar yang akan kita tampilkan menggunakanmovie.image_url
className="card-title"
ubah isi dari elemen tersebut menggunakanmovie.title
className="card-subtitle"
- ubah isi dari elemen tersebut menggunakan
movie.type
- serta berikondisi di mana:
- menggunakan background berwarna merah dengan cara menambahkan class
"bg-danger"
apabilamovie.type
berinlai"TV"
- selain itu berilah ia background berwarna hijau dengan cara menambahkan class
"bg-success"
- menggunakan background berwarna merah dengan cara menambahkan class
- ubah isi dari elemen tersebut menggunakan
className="btn btn-primary w-100"
ubah nilai dari attributhref
menggunakanmovie.url
- Tampilkan data movie pada
MovieCard.js
menggunakan data yang ada pada filedummy-data.js
- ambil data dari file
dummy-data.js
dengan caraimport
file tersebut ke dalamApp.js
- tampilkan data tersebut di dalam elemen dengan
id="daftar-movie"
, untuk menampilkan data tersebut kalian dapat menggunakanmap
- dikarenakan kita melakukan sebuah
loop
di dalam elemen denganclassName="row"
, maka kita membutuhkan elemen denganclass="col"
sebagai wadah penampung dariMovieCard
yang sudah kita buat. Ada4 breakpoint
yang perlu kita berikan kepada elemen pembungkus tersebut yaitu:- akan menampilkan 4
MovieCard
component padabreakpoint
lg
- akan menampilkan 3
MovieCard
componentbreakpoint
md
- akan menampilkan 2
MovieCard
componentbreakpoint
sm
- hanya menampilkan 1
MovieCard
componentbreakpoint
lebih kecil darism
- akan menampilkan 4
- jangan lupa untuk menambahkan
attribute key
pada elemen tersebut, hal ini bertujuan agar React.js dapat membedakan antara satu elemen dengan elemen yang lain (kalian dapat menggunakanmal_id
sebagaikey
) - panggil
MovieCard
yang tadi sudah kita buat ke dalam fileApp.js
pada direktorisrc
, dan tambahkan component tersebut ke dalam elemen denganclass="col"
yang tadi sudah kita buat. - Kirim data ke dalam props
movie
dari hasil loop datadummy-data.js
yang telah di-import
- ambil data dari file
Pada kesempatan kali ini kita akan melanjutkan apa sudah kalian kerjakan pada soal pertama. Apabila pada soal sebelumnya kita sudah berhasil menampilkan data film yang berada didalam file src/dummy-data.js
, kali ini kita akan mengambil data tersebut melalui public API JIKAN.
Berikut adalah langkah-langkah pengerjaannya:
copy and paste
soal yang sebelumnya sudah kamu kerjakan dan ubah namanya menjadisoal-02
- Lakukan instalasi menggunakan
npm install
atauyarn
- buatlah sebuah
state
diApp.js
dengan spec:movieList['Array of Object']
=> variable ini akan menampung seluruh daftar film yang nantinya akan kita tampilkanisLoading['Boolean']
=> variable ini akan menjadi indikator kita apakah data yang kita ambil melalui public API tersebut sudah berhasil atau tidak
- buatlah sebuah fungsi dengan nama
fetchMovieList
-
fungsi tersebut akan mengambil daftar film melalui link berikut
"https://api.jikan.moe/v3/top/anime"
-
setelah data kita dapatkan, maka kita akan memasukan data tersebut kedalam
state.movieList
-
lifecycle
componentDidMount
=> panggil fungsifetchMovieList
componentDidUpdate
=> cek apakah ada perubahan padastate.movieList
, apabila kita sudah berhasil mengambil data dari public API dan berhasil memasukan data tersebut kedalamstate.movieList
maka kita perlu untuk merubah nilaistate.isLoading
menjaditrue
render
- buatlah sebuah kondisi menggunakan
state.isLoading
-
apabila ia bernilai
false
, maka kita akan menampilkan daftar movie yang sudah kita buat pada soal sebelumnya -
apabila ia bernilai
true
, maka kita perlu menampilkan sebuah tag<h2>Loading...</h2>
-
- buatlah sebuah kondisi menggunakan
- Peserta memahami cara menggunakan ReactJS
- Peserta memahami cara instalasi project ReactJS yang sudah ada
- Peserta mampu membuat sebuah ReactJs
class component based
- Peserta mampu untuk mengambil data dari public API
- Peserta mampu melakukan ekstrasi terhadap sebuah UI menjadi
Component
yang lebih kecil - Peserta memahami dan mampu melakukan implementasi dari lifecycle
componentDidMount
- Peserta memahami dan mampu melakukan implementasi dari lifecycle
componentDidUpdate