React Axios1
Axios en kısa tabiriyle front-end tarafından kendi Api mızdan yada başka bir Restful api dan veri çekmemize yarar.
Şimdi https://rallycoding.herokuapp.com/api/music_albums adresinden veri çekelim.
https://jsonplaceholder.typicode.com/ sizde burada çekebilirsiniz. Buradan title, artist ve image propertilerini çekeceğim boostrap ile güzel bir card section yapıp burada göstereceğim.
React projenizi setup ettiğinizi düşünüyorum.
Yeni bir component oluşturur iken class base component oluşturmamız gerekiyor. Çünkü componentDidMounth methodu ile render methodumuzdan önce verilerimizi getireceğiz. Life cycle methodlarıda method base componentlerde kullanılmaz.
npm i axios komutu ile projemin olduğu dizine axios kütüphanesini de dahil ediyorum.
Componentimi şimdilik yazımı bu şekilde. Clasik boostrap card kullandım. Ben projeme boostrap css kullandım. Nasıl Kullanacağı blogun içinde mevcutbakabilirsiniz.
Şimdi bu componentimin çalışmasını kontrol etmek üzere Home componentimden çağıracağım. Yine route konusunu daha önce işlemiştim. Eğer bilmiyor iseniz yine bu blogtan bulabilirsiniz. Eğer router kullanmadıysanız aynı şekilde App.js den de çağırabilirsiniz.
Görüldüğü gibi Componentimiz çalıştı sorunumuz yok. Şimdi sırada axios ile get işlemi yapıcaz. Datalarımızı alacağız
Axios Methodumuzu çağıralım. Axios aracılığı ile asenkron şekilde data alacağım. (Asenkronun burada ki en tatlı anlamı biraz süre içinde gidecek ve yapacak). Biz bu asenkron işlemin ne zaman biteceğini bilemeyiz. Ama biterken bize promise dönmesini isteriz. Promise bize işlemlerin gitmesi gerektiği gibi gittiğini belirler. Promise alabilmek için bizim .then() ile yaparız.
.then() aslında get işlemi tamamlandığında then() içindeki method çalışır. Burayı biraz daha açıklamakta fayda var.
axios.get("https://rallycoding.herokuapp.com/api/music_albums")
Burası tamamlandığında then() çalışır.
Log umuz ilede cevaplarımızı alıyoruz.Sonuç itibari ile göreceğimiz sayfa.
Görüldüğü üzere data arrayımızın içinde 5 tane obje var. Bu objelerin {title: "Red", artist: "Taylor Swift", url: "https://www.amazon.com/Red-Taylor-Swift/dp/B008XNZMOU", image: "https://images-na.ssl-images-amazon.com/images/I/41j7-7yboXL.jpg", thumbnail_image: "https://i.imgur.com/K3KJ3w4h.jpg"}
Yapmamız gereken posts [] statesi oluşturup için axios.get den gelen dataları set etmek ardındanda bunları dinamik şekilde göstermek.
Kodların son hali
Ekran Görüntüsü
Dinamik şekilde gösterme yaparken dikkat etmem gereken postList ' im JSX dönen bir array dir. Jsx lerimi return ile dönmem gerekir. İkinci dikkat etmem gereken yer componentlerin return methodu yanlızca bir tane root divi nin içinde elemetler olmalıdır.
Yorumlar
Yorum Gönder