Daha önce bir şirket için Movie Database uygulaması yapmıştın. Yeni versiyonunu hazırlamak istiyorlar. İlgili şirket ile toplantı yaparak isterleri aldın ve iş listesini çıkardın. Kolay gelsin.
-
App.jsxiçinde filmEditMovieForm.jsxcomponentini yeni bir route ile ekle:/movies/edit/:id -
EditMovieForm.jsxde idyi useParams hooku ile al. - Component mount olduğunda ilgili filmin bilgisini apiden GET isteği ile al ve movie stateine aktar:
https://nextgen-project.onrender.com/api/s11d3/movies/:id - Düzenleme formu submit edildiğinde çalışmıyor. Gerekli api isteğini ekle: PUT
https://nextgen-project.onrender.com/api/s11d3/movies/:id - Apiden gelen tüm filmler verisini movies stateine gönder ve sayfayı ilgili filmin detay sayfasına yönlendir.
/movies/:id
-
App.jsxiçindekideleteMoviefonksiyonunu film silme isteği yapacak şekilde tamamla. - Filmi silmek için ilgili Api isteğini at: DELETE
https://nextgen-project.onrender.com/api/s11d3/movies/:id - responseda gelen dataya göre movies stateini güncelle.
- bu fonksiyonu Movie componentine gönder.
-
Movie.jsxde sil butonu ekle ve bu butona event handler ekle. - Sil butonu arkplan rengini
bg-red-600yap. hover ve dark mode için uygun renkleri diğer butonlardan örnek alarak yap. - Bu event handlerda
deleteMoviefonskiyonunu kullanarak filmi sil. - İstek tamamlandığında kullanıcıyı
/moviesrouteuna yönlendir.
- Sıfırdan "AddMovieForm" componenti oluşturmak için "EditMovieForm.jsx"i model olarak kullan.
-
AddMovieForm'a erişim sağlayan bir route ekle:movies/add - UIda AddMoiveForma yönlenecek butonu bul ve tıklanınca film ekleme sayfasının açılmasını sağla.
- AddMovieForm'da, form submit için bir event handler ekleyin. Form submit edildiğinde, formdaki datayı POST olarak
https://nextgen-project.onrender.com/api/s11d3/moviese gönder. - İstek başarılı olunca App.jsxdeki movies statini güncelle.
-
/moviesrouteuna yönlendir.
- Favori ekle butonuna basılınca favorilere eklenmesi için gerekli işlemleri yap.
- Aynı filmin 2 kere eklenmesini engelle.
- Film silinince favorilerden de sil.
- UIda ekli bulunan Dark mode butonunun çalışır hale getir.
hooks/useLocalStorage.jsxhookunu kullanarak localstorageas11d3anahtarı ile darkMode statei oluştur. Başlangıç değeritrueolsun. - Darkmode switchine onChange eventi ekleyerek darkMode stateini değiştir.
- Darkmode On olunca App.jsxde en üstteki divin classını
dark bg-slate-900 h-screenyapsın. Off olunca bu classları eklemesin. - Darkmode açık iken butonda
Darkmode Onyazsın, kapalı ikenDarkmode Offyazsın - Darkmode açık iken buton
checkedolsun.
- İPUCU: APIden aşağıdaki formatta filmler gelir:
[
{
id: 5,
title: 'Tombstone',
director: 'George P. Cosmatos',
metascore: 89,
genre: 'Drama',
description:
"A successful lawman's plans to retire anonymously in Tombstone, Arizona are disrupted by the kind of outlaws he was famous for eliminating.",
},
];