Bugün CRUD operasyonlarını put, delete, edit requestleri ile yapmayı öğrendiniz. Ayrıca, Route bağlantılı bileşenlere propların nasıl iletileceğini ve bir API'den değer almak için URL parametrelerinin nasıl kullanılacağını araştırdınız. Bu projede, geçen hafta üzerinde çalıştığımız film veritabanı uygulamasına CRUD işlevleri ekleyeceksiniz.
CRUD uygulamaları çoğu web uygulamasının temelidir. Harici bir kaynaktan veri oluşturmayı, düzenlemeyi ve silmeyi yönetebilmek, olabildiğince önemli bir beceridir. Bu projede, tüm bu temel eylemlere izin vermek için gerekli kodu tamamlayacaksınız.
- Aşağıdaki formatta sunucudaki tüm filmleri getirir.
[{
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."
}]
- Girilen id'ye sahip filmi getirir.
- Body de aktarılan bilgilerle yeni bir film ekler. Güncellenmiş movie listesini döndürür.
- Girilen id li filmin body deki bilgilerini günceller. Güncellenmiş film listesini döndürür.
- Girilen id deki filmi listeden siler. Silinen filmin id sini döndürür.
Görevlerinizi tek tek tamamladığınızdan ve ilerlemeden önce her bir görevi test ettiğinizden emin olun..
- Forklayın.
- Klonlayın.
- Proje dizinine girin
-
npm install
-
npm start
-
Öncelikle, filmi düzenle bileşenine gidebilmemiz gerekiyor. App.js içinde,
<EditMovieForm>
bileşenine edit route unu ekleyin. -
Ardından, url aracılığıyla bileşene iletilen idyi almamız gerekiyor.. id yi almak için
useParams
hookunu kullanın. -
Mevcut filmin niteliklerini yerel form stateimize yükleyebilmeliyiz.
EditMovieForm
bağlandığında, mevcut idmizin filmini api'den alın ve yerel state'e döndürülen verileri kaydedin. -
Bu noktada, düzenleme formu gönderildiğinde hiçbir şey olmuyor. Sunucuyu güncellenmiş film verilerimizle güncellemek için gereken api çağrısını ekleyin.
-
Sunucu verilerinizin ve yerel state'inizin senkronize olduğundan emin olmayı unutmayın! Düzenleme formuna, uygulamanın "setMovies" metoduna erişim izni vermek için düzenleme yapmak için gereken değişiklikleri yapın.
-
Artık
setMovies
e erişimimiz olduğuna göre, güncellenmiş film listesinin global state'imize kaydedildiğinden emin olun. -
Kullanıcıyı halihazırda düzenlenen filmin bağımsız bilgi sayfasına yönlendirin.
Bir CRUD özelliği eklediniz! Aferin! Şimdi film silme özelliği ekleyelim.
-
Silmek için gereken "butonu" tutan bileşeni tanımlayın. Bu butona bir event handler ekleyin.
-
Görüntülenmekte olan filmi silmek için istekte bulunan bir event handler oluşturun. Bu requestten ne döndürüldüğünü gözlemleyin.
-
Bir kez daha sunucuyu ve state verilerini senkronize tutmanız gerekecek.
App.js
içinde,deleteMovie
metodunu bir id alıp, girilen id li filmi verimizden silip state'i güncelleyecek şekilde tamamlayın. -
deleteMovie
'yi ilgili bileşene aktarın. -
Film silme isteği yapıldığında
deleteMovie
yi çalıştırın, istek tamamlandığında kullanıcıyı/movies
routeuna yönlendirin.
Tamam! Artık hazırsın! Şimdi baştan sona bir CRUD oluşturalım.
-
Sıfırdan bir "AddMovieForm" bileşeni oluşturmak için "EditMovieForm.js"yi model olarak kullanın. Bileşen, yeni bir filmin tüm özelliklerini yerel state'de tutmalıdır.
-
AddMovieForm
'a erişim sağlayan bir route ekleyin. -
Kullanıcı arayüzünün yeni "AddMovieForm"unuza yönlendirilmesi gereken bölümünü bulun. Bu düğmenin beklendiği gibi çalışmasını sağlayın.
-
AddMovieForm'da, form gönderimi için bir event handler ekleyin. Form gönderildiğinde, bileşenin state değerleri ile bir film eklemek için uygun çağırıyı çalıştırın.
-
Bileşeninizin, oluşturulduktan sonra genel state'inin
/movies
dizinine yönlendirmeler için gerekli erişime sahip olduğundan ve bunları çalıştırdığından ve değiştirdiğinden emin olun.
- "addToFavorites" işlevini ekleyin.
Film
bileşeninde favori butonuna basıldığında, o anda görüntülenenin idsinin ve adınınApp.js
deki favori state diliminde olduğundan emin olun. - Ekstra kredi için, yalnızca benzersiz filmlerin favori olarak eklenebildiğinden emin olun. Diziler için ".find" metodunu nasıl kullandığımızı hatırlayın.
- Projeye gece modu ekleyin.