{"id":39368,"date":"2026-02-19T20:30:40","date_gmt":"2026-02-19T17:30:40","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/"},"modified":"2026-02-19T20:30:40","modified_gmt":"2026-02-19T17:30:40","slug":"react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/","title":{"rendered":"React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine"},"content":{"rendered":"<h2>React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine<\/h2>\n<p>Modern web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri haline gelen React, bile\u015fen tabanl\u0131 yap\u0131s\u0131 ve deklaratif yakla\u015f\u0131m\u0131 sayesinde dinamik ve kullan\u0131c\u0131 dostu aray\u00fczler olu\u015fturmak i\u00e7in e\u015fsiz bir ara\u00e7 sunar. Bu makalede, React becerilerinizi peki\u015ftirmek ve farkl\u0131 karma\u015f\u0131kl\u0131k seviyelerindeki projelerde deneyim kazanmak amac\u0131yla d\u00f6rt farkl\u0131 uygulama geli\u015ftirece\u011fiz: Duyarl\u0131 bir dijital kartvizit, etkile\u015fimli bir portf\u00f6y sayfas\u0131, basit bir yap\u0131lacaklar listesi ve son olarak kapsaml\u0131 bir Noel dilek listesi uygulamas\u0131. Bu yolculuk boyunca React&#8217;\u0131n temel kavramlar\u0131ndan (bile\u015fenler, prop&#8217;lar, state) ileri seviye konulara (yerel depolama, veri y\u00f6netimi) kadar bir\u00e7ok konuya de\u011finecek, pratik \u00f6rneklerle \u00f6\u011frenmenizi kolayla\u015ft\u0131raca\u011f\u0131z. Haz\u0131rsan\u0131z, React d\u00fcnyas\u0131na dalal\u0131m!<\/p>\n<h3>React Temellerine H\u0131zl\u0131 Bir Bak\u0131\u015f<\/h3>\n<p>React, Facebook taraf\u0131ndan geli\u015ftirilen ve kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak i\u00e7in kullan\u0131lan a\u00e7\u0131k kaynakl\u0131 bir JavaScript k\u00fct\u00fcphanesidir. Temel felsefesi, karma\u015f\u0131k UI&#8217;lar\u0131 y\u00f6netilebilir, yeniden kullan\u0131labilir ve ba\u011f\u0131ms\u0131z bile\u015fenlere ay\u0131rmakt\u0131r. Bu b\u00f6l\u00fcm, React&#8217;a yeni ba\u015flayanlar veya bilgilerini tazelemek isteyenler i\u00e7in bir temel olu\u015fturacakt\u0131r.<\/p>\n<h4>Bile\u015fenler ve Prop&#8217;lar: React&#8217;\u0131n Yap\u0131 Ta\u015flar\u0131<\/h4>\n<p>React&#8217;ta her \u015fey bir bile\u015fendir. Bile\u015fenler, uygulaman\u0131z\u0131n ba\u011f\u0131ms\u0131z ve yeniden kullan\u0131labilir par\u00e7alar\u0131d\u0131r. \u0130ki ana bile\u015fen t\u00fcr\u00fc vard\u0131r: Fonksiyonel bile\u015fenler ve s\u0131n\u0131f bile\u015fenleri. G\u00fcn\u00fcm\u00fczde, React Hook&#8217;lar\u0131 sayesinde fonksiyonel bile\u015fenler \u00e7ok daha yayg\u0131n olarak kullan\u0131lmaktad\u0131r. Prop&#8217;lar (properties), bile\u015fenler aras\u0131nda veri aktar\u0131m\u0131 yapmak i\u00e7in kullan\u0131l\u0131r. \u00dcst bile\u015fenden alt bile\u015fene veri g\u00f6ndermenin tek y\u00f6nl\u00fc bir yoludur ve prop&#8217;lar genellikle salt okunurdur.<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\n\nfunction Selamlama(props) {\n  return <h3>Merhaba, {props.isim}!<\/h3>;\n}\n\n\/\/ Kullan\u0131m: <Selamlama isim=\"D\u00fcnya\" \/><\/pre>\n<p><\/code><\/p>\n<h4>State Y\u00f6netimi ve Hook'lar (useState, useEffect)<\/h4>\n<p>State, bir bile\u015fenin zamanla de\u011fi\u015febilen verilerini ifade eder. React'ta state, uygulaman\u0131z\u0131n dinamik olmas\u0131n\u0131 sa\u011flayan temel mekanizmad\u0131r. <code>useState<\/code> hook'u, fonksiyonel bile\u015fenlerde state y\u00f6netimi i\u00e7in kullan\u0131l\u0131rken, <code>useEffect<\/code> hook'u yan etkileri (veri \u00e7ekme, DOM manip\u00fclasyonu, timer'lar vb.) y\u00f6netmek i\u00e7in kullan\u0131l\u0131r. Bu hook'lar, React'\u0131n g\u00fcc\u00fcn\u00fc fonksiyonel bile\u015fenlere ta\u015f\u0131m\u0131\u015ft\u0131r.<\/p>\n<pre><code class=\"language-jsx\">import React, { useState } from 'react';\n\nfunction Sayac() {\n  const [sayi, setSayi] = useState(0);\n\n  return (\n    <div>\n      <p>Saya\u00e7: {sayi}<\/p>\n      <button onClick={() => setSayi(sayi + 1)}>Art\u0131r<\/button>\n    <\/div>\n  );\n}<\/pre>\n<p><\/code><\/p>\n<h4>Olay Y\u00f6netimi ve Ko\u015fullu Render Etme<\/h4>\n<p>React'ta olay y\u00f6netimi, HTML'deki olay y\u00f6netimine benzer ancak baz\u0131 farkl\u0131l\u0131klar i\u00e7erir (\u00f6rne\u011fin, camelCase isimlendirme ve fonksiyon referanslar\u0131). Buton t\u0131klamalar\u0131, form g\u00f6nderimleri gibi kullan\u0131c\u0131 etkile\u015fimlerini ele almak i\u00e7in kullan\u0131l\u0131r. Ko\u015fullu render etme ise, belirli bir ko\u015fula ba\u011fl\u0131 olarak bile\u015fenlerin veya \u00f6\u011felerin g\u00f6sterilip gizlenmesidir. Bu, uygulaman\u0131z\u0131n farkl\u0131 durumlara g\u00f6re farkl\u0131 UI'lar sunmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Uygulama 1: Duyarl\u0131 Bir Dijital Kartvizit<\/h3>\n<p>\u0130lk uygulamam\u0131z, temel React kavramlar\u0131n\u0131 peki\u015ftirece\u011fimiz ve responsive tasar\u0131m prensiplerini uygulayaca\u011f\u0131m\u0131z basit bir dijital kartvizit olacak. Bu proje, React bile\u015fenlerinin nas\u0131l olu\u015fturuldu\u011funu, prop'lar\u0131n nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 ve CSS ile stil verildi\u011fini anlaman\u0131za yard\u0131mc\u0131 olacak.<\/p>\n<h4>Bile\u015fen Yap\u0131s\u0131 ve Prop Kullan\u0131m\u0131<\/h4>\n<p>Kartvizit uygulamam\u0131z i\u00e7in ana bir <code>Kartvizit<\/code> bile\u015feni olu\u015fturaca\u011f\u0131z. Bu bile\u015fen, isim, unvan, foto\u011fraf, ileti\u015fim bilgileri gibi prop'lar\u0131 alacak ve bunlar\u0131 uygun \u015fekilde render edecek. Her bir bilgi par\u00e7as\u0131 (\u00f6rne\u011fin, bir sosyal medya ba\u011flant\u0131s\u0131) i\u00e7in ayr\u0131 bir alt bile\u015fen olu\u015fturmak, kodun daha d\u00fczenli olmas\u0131n\u0131 sa\u011flayacakt\u0131r.<\/p>\n<pre><code class=\"language-jsx\">import React from 'react';\n\nfunction Kartvizit({ ad, unvan, fotograf, eposta, telefon }) {\n  return (\n    <div className=\"kartvizit-kutusu\">\n      <img src={fotograf} alt={ad} className=\"profil-fotografi\" \/>\n      <h2>{ad}<\/h2>\n      <h3>{unvan}<\/h3>\n      <p>E-posta: {eposta}<\/p>\n      <p>Telefon: {telefon}<\/p>\n    <\/div>\n  );\n}\n\nexport default Kartvizit;<\/pre>\n<p><\/code><\/p>\n<h4>Temel Stil Belirleme (CSS Mod\u00fclleri veya Styled Components)<\/h4>\n<p>Kartvizitin g\u00f6rsel \u00e7ekicili\u011fini art\u0131rmak i\u00e7in CSS kullanaca\u011f\u0131z. Projenin b\u00fcy\u00fckl\u00fc\u011f\u00fcne g\u00f6re CSS Mod\u00fclleri, Styled Components veya Tailwind CSS gibi modern stil yakla\u015f\u0131mlar\u0131ndan birini tercih edebilirsiniz. Bu uygulamada basit CSS dosyalar\u0131 kullanmak yeterli olacakt\u0131r. Odak noktam\u0131z, kartvizitin farkl\u0131 ekran boyutlar\u0131nda iyi g\u00f6r\u00fcnmesini sa\u011flamak.<\/p>\n<pre><code class=\"language-css\">\/* Kartvizit.css *\/\n.kartvizit-kutusu {\n  border: 1px solid #ddd;\n  padding: 20px;\n  margin: 20px;\n  text-align: center;\n  max-width: 300px;\n  box-shadow: 0 4px 8px rgba(0,0,0,0.1);\n  border-radius: 8px;\n}\n\n.profil-fotografi {\n  width: 100px;\n  height: 100px;\n  border-radius: 50%;\n  object-fit: cover;\n  margin-bottom: 15px;\n}\n\n\/* Di\u011fer stiller... *\/<\/pre>\n<p><\/code><\/p>\n<h4>Duyarl\u0131l\u0131k (Responsive Design) \u0130lkeleri<\/h4>\n<p>Kartvizitin hem masa\u00fcst\u00fc hem de mobil cihazlarda d\u00fczg\u00fcn g\u00f6r\u00fcnmesi i\u00e7in duyarl\u0131 tasar\u0131m prensiplerini uygulayaca\u011f\u0131z. Media query'ler kullanarak farkl\u0131 ekran boyutlar\u0131na g\u00f6re stil ayarlamalar\u0131 yapabiliriz. Flexbox veya CSS Grid gibi modern d\u00fczen teknikleri, bile\u015fenlerin esnek bir \u015fekilde yerle\u015fmesini sa\u011flayarak duyarl\u0131l\u0131\u011f\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<pre><code class=\"language-css\">\/* Kartvizit.css (devam\u0131) *\/\n@media (max-width: 600px) {\n  .kartvizit-kutusu {\n    margin: 10px;\n    padding: 15px;\n  }\n  .profil-fotografi {\n    width: 80px;\n    height: 80px;\n  }\n}<\/pre>\n<p><\/code><\/p>\n<h3>Uygulama 2: Etkile\u015fimli Bir Portf\u00f6y Sayfas\u0131<\/h3>\n<p>\u0130kinci uygulamam\u0131zda, ilk kartvizit projemizi geni\u015fleterek daha etkile\u015fimli bir portf\u00f6y sayfas\u0131na d\u00f6n\u00fc\u015ft\u00fcrece\u011fiz. Bu sayede React'\u0131n state y\u00f6netimi ve olay i\u015fleme yeteneklerini daha yak\u0131ndan tan\u0131yaca\u011f\u0131z. Kullan\u0131c\u0131lar\u0131n sayfayla etkile\u015fime girmesini sa\u011flayacak \u00f6zellikler ekleyece\u011fiz.<\/p>\n<h4>State Y\u00f6netimi (useState Hook'u) ile Dinamik \u0130\u00e7erik<\/h4>\n<p>Portf\u00f6y sayfam\u0131zda, kullan\u0131c\u0131n\u0131n farkl\u0131 b\u00f6l\u00fcmler aras\u0131nda ge\u00e7i\u015f yapmas\u0131n\u0131 sa\u011flayan bir navigasyon men\u00fcs\u00fc veya bir \"Hakk\u0131mda\" b\u00f6l\u00fcm\u00fcn\u00fc geni\u015fletip daraltan bir buton olabilir. Bu t\u00fcr dinamik etkile\u015fimleri y\u00f6netmek i\u00e7in <code>useState<\/code> hook'unu kullanaca\u011f\u0131z. \u00d6rne\u011fin, bir ileti\u015fim formunun g\u00f6r\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fc state ile kontrol edebiliriz.<\/p>\n<pre><code class=\"language-jsx\">import React, { useState } from 'react';\n\nfunction Portfoy() {\n  const [formAcik, setFormAcik] = useState(false);\n\n  return (\n    <div>\n      <h1>Benim Portf\u00f6y\u00fcm<\/h1>\n      <button onClick={() => setFormAcik(!formAcik)}>\n        {formAcik ? 'Formu Kapat' : 'Bana Ula\u015f\u0131n'}\n      <\/button>\n      {formAcik && (\n        <div className=\"iletisim-formu\">\n          <h3>\u0130leti\u015fim Formu<\/h3>\n          <!-- Form elemanlar\u0131 buraya gelecek -->\n        <\/div>\n      )}\n    <\/div>\n  );\n}\n\nexport default Portfoy;<\/pre>\n<p><\/code><\/p>\n<h4>Olay Y\u00f6netimi (Event Handling) ve Kullan\u0131c\u0131 Etkile\u015fimleri<\/h4>\n<p>Buton t\u0131klamalar\u0131, form g\u00f6nderimleri, fare hareketleri gibi olaylar\u0131 React'ta kolayca y\u00f6netebiliriz. \u00d6nceki \u00f6rnekte <code>onClick<\/code> olay\u0131n\u0131 kullanarak bir butonun t\u0131klanmas\u0131n\u0131 yakalad\u0131k. Form elemanlar\u0131 i\u00e7in <code>onChange<\/code> ve <code>onSubmit<\/code> gibi olaylar\u0131 kullanarak kullan\u0131c\u0131 girdilerini i\u015fleyebiliriz. Bu, uygulaman\u0131z\u0131n kullan\u0131c\u0131ya tepki vermesini sa\u011flar.<\/p>\n<h4>Ko\u015fullu Render Etme ile Dinamik UI Ak\u0131\u015f\u0131<\/h4>\n<p>Portf\u00f6y sayfas\u0131nda, kullan\u0131c\u0131n\u0131n se\u00e7imine g\u00f6re farkl\u0131 projeleri veya beceri setlerini g\u00f6stermek isteyebiliriz. <code>if<\/code> ifadeleri, \u00fc\u00e7l\u00fc operat\u00f6rler (ternary operator) veya mant\u0131ksal <code>&&<\/code> operat\u00f6r\u00fc kullanarak belirli ko\u015fullara ba\u011fl\u0131 olarak farkl\u0131 bile\u015fenleri veya HTML par\u00e7ac\u0131klar\u0131n\u0131 render edebiliriz. Bu, UI'n\u0131z\u0131n daha esnek ve duruma duyarl\u0131 olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Uygulama 3: Basit Bir Yap\u0131lacaklar Listesi Y\u00f6neticisi<\/h3>\n<p>\u00dc\u00e7\u00fcnc\u00fc uygulamam\u0131z, React'\u0131n state y\u00f6netimi ve liste render etme yeteneklerini daha derinlemesine ke\u015ffedece\u011fimiz klasik bir \"Yap\u0131lacaklar Listesi\" olacak. Bu uygulama, kullan\u0131c\u0131dan girdi almay\u0131, bu girdileri bir listeye eklemeyi, listeden \u00f6\u011fe silmeyi ve mevcut \u00f6\u011feleri g\u00fcncellemeyi \u00f6\u011fretecek.<\/p>\n<h4>Liste Render Etme ve Anahtarlar (Keys)<\/h4>\n<p>Bir yap\u0131lacaklar listesi, genellikle bir dizi g\u00f6revden olu\u015fur. React'ta dizileri render etmek i\u00e7in <code>Array.prototype.map()<\/code> fonksiyonunu kullan\u0131r\u0131z. Her liste \u00f6\u011fesine benzersiz bir <code>key<\/code> prop'u vermek \u00e7ok \u00f6nemlidir. Bu, React'\u0131n listelerdeki de\u011fi\u015fiklikleri (ekleme, silme, s\u0131ralama) verimli bir \u015fekilde izlemesine yard\u0131mc\u0131 olur.<\/p>\n<pre><code class=\"language-jsx\">import React, { useState } from 'react';\n\nfunction YapilacaklarListesi() {\n  const [gorevler, setGorevler] = useState([]);\n  const [yeniGorev, setYeniGorev] = useState('');\n\n  const gorevEkle = () => {\n    if (yeniGorev.trim() !== '') {\n      setGorevler([...gorevler, { id: Date.now(), metin: yeniGorev, tamamlandi: false }]);\n      setYeniGorev('');\n    }\n  };\n\n  const gorevSil = (id) => {\n    setGorevler(gorevler.filter(gorev => gorev.id !== id));\n  };\n\n  return (\n    <div>\n      <input\n        type=\"text\"\n        value={yeniGorev}\n        onChange={(e) => setYeniGorev(e.target.value)}\n        placeholder=\"Yeni g\u00f6rev ekle...\"\n      \/>\n      <button onClick={gorevEkle}>Ekle<\/button>\n      <ul>\n        {gorevler.map(gorev => (\n          <li key={gorev.id}>\n            {gorev.metin}\n            <button onClick={() => gorevSil(gorev.id)}>Sil<\/button>\n          <\/li>\n        ))}\n      <\/ul>\n    <\/div>\n  );\n}\n\nexport default YapilacaklarListesi;<\/pre>\n<p><\/code><\/p>\n<h4>Yeni \u00d6\u011fe Ekleme ve Silme \u0130\u015flemleri<\/h4>\n<p><code>gorevEkle<\/code> ve <code>gorevSil<\/code> fonksiyonlar\u0131, state'i do\u011fru bir \u015fekilde g\u00fcncellemeyi g\u00f6sterir. React'ta state'i do\u011frudan de\u011fi\u015ftirmek yerine, her zaman yeni bir state nesnesi veya dizisi olu\u015fturup <code>setGorevler<\/code> gibi setter fonksiyonlar\u0131n\u0131 kullanmal\u0131y\u0131z. Bu, React'\u0131n de\u011fi\u015fiklikleri alg\u0131lamas\u0131n\u0131 ve UI'\u0131 yeniden render etmesini sa\u011flar.<\/p>\n<h4>Form Y\u00f6netimi ve Giri\u015f Kontrol\u00fc<\/h4>\n<p>Kullan\u0131c\u0131dan girdi almak i\u00e7in <code><input><\/code> eleman\u0131n\u0131 kullan\u0131r\u0131z. Bu input'un de\u011ferini bir state de\u011fi\u015fkeniyle (<code>yeniGorev<\/code>) ba\u011flayarak \"kontroll\u00fc bile\u015fen\" olu\u015ftururuz. <code>onChange<\/code> olay\u0131 ile input de\u011feri de\u011fi\u015ftik\u00e7e state'i g\u00fcncelleriz. Bu yakla\u015f\u0131m, form verilerini kolayca y\u00f6netmemizi ve do\u011frulamam\u0131z\u0131 sa\u011flar.<\/p>\n<h3>Uygulama 4: Noel Dilek Listesi Uygulamas\u0131<\/h3>\n<p>D\u00f6rd\u00fcnc\u00fc ve en kapsaml\u0131 uygulamam\u0131z, bir \"Noel Dilek Listesi\" olacak. Bu proje, \u00f6nceki uygulamalardan \u00f6\u011frendiklerimizi bir araya getirerek daha geli\u015fmi\u015f \u00f6zellikler eklememizi sa\u011flayacak. \u00d6zellikle verilerin kal\u0131c\u0131l\u0131\u011f\u0131n\u0131 sa\u011flamak i\u00e7in yerel depolama kullan\u0131m\u0131na odaklanaca\u011f\u0131z.<\/p>\n<h4>Geli\u015fmi\u015f State Y\u00f6netimi ve Veri Yap\u0131lar\u0131<\/h4>\n<p>Dilek listesi uygulamas\u0131nda, her dilek \u00f6\u011fesi sadece bir metin de\u011fil, ayn\u0131 zamanda bir ID, a\u00e7\u0131klama, \u00f6ncelik veya resim URL'si gibi daha fazla bilgi i\u00e7erebilir. Bu, state'in daha karma\u015f\u0131k nesneler ve dizilerle y\u00f6netilmesini gerektirir. State'i daha mod\u00fcler hale getirmek i\u00e7in birden fazla <code>useState<\/code> \u00e7a\u011fr\u0131s\u0131 kullanabilir veya daha b\u00fcy\u00fck state objeleriyle \u00e7al\u0131\u015fabiliriz.<\/p>\n<h4>Yerel Depolama (LocalStorage) Kullan\u0131m\u0131<\/h4>\n<p>Uygulama kapat\u0131ld\u0131\u011f\u0131nda bile dileklerin kaybolmamas\u0131n\u0131 sa\u011flamak i\u00e7in taray\u0131c\u0131n\u0131n <code>localStorage<\/code> \u00f6zelli\u011fini kullanaca\u011f\u0131z. <code>useEffect<\/code> hook'u, bile\u015fen y\u00fcklendi\u011finde <code>localStorage<\/code>'dan verileri \u00e7ekmek ve state de\u011fi\u015fti\u011finde verileri <code>localStorage<\/code>'a kaydetmek i\u00e7in idealdir. Bu, uygulaman\u0131za temel bir kal\u0131c\u0131l\u0131k katman\u0131 ekler.<\/p>\n<pre><code class=\"language-jsx\">import React, { useState, useEffect } from 'react';\n\nfunction DilekListesi() {\n  const [dilekler, setDilekler] = useState(() => {\n    const kaydedilmisDilekler = localStorage.getItem('noelDilekleri');\n    return kaydedilmisDilekler ? JSON.parse(kaydedilmisDilekler) : [];\n  });\n  \/\/ ... di\u011fer state'ler\n\n  useEffect(() => {\n    localStorage.setItem('noelDilekleri', JSON.stringify(dilekler));\n  }, [dilekler]);\n\n  \/\/ ... dilek ekleme, silme, g\u00fcncelleme fonksiyonlar\u0131\n  return (\n    <div>\n      <h2>Noel Dilek Listem<\/h2>\n      <!-- Dilek ekleme formu -->\n      <ul>\n        {dilekler.map(dilek => (\n          <li key={dilek.id}>{dilek.metin}<\/li>\n        ))}\n      <\/ul>\n    <\/div>\n  );\n}\n\nexport default DilekListesi;<\/pre>\n<p><\/code><\/p>\n<h4>Bile\u015fenler Aras\u0131 \u0130leti\u015fim ve Kullan\u0131c\u0131 Deneyimi \u0130yile\u015ftirmeleri<\/h4>\n<p>Dilek listesi uygulamas\u0131, birden fazla bile\u015fenden olu\u015fabilir (\u00f6rne\u011fin, bir <code>DilekFormu<\/code> bile\u015feni ve bir <code>DilekListesiGoruntuleyici<\/code> bile\u015feni). Bu bile\u015fenler aras\u0131nda veri aktar\u0131m\u0131 i\u00e7in prop drilling (prop'lar\u0131 birden fazla katman a\u015fa\u011f\u0131 ge\u00e7irme) veya daha karma\u015f\u0131k senaryolarda React Context API kullan\u0131labilir. Kullan\u0131c\u0131 deneyimini art\u0131rmak i\u00e7in dilekleri filtreleme, s\u0131ralama veya hatta basit bir s\u00fcr\u00fckle-b\u0131rak (drag-and-drop) \u00f6zelli\u011fi eklenebilir.<\/p>\n<h3>Geli\u015ftirme S\u00fcrecinde En \u0130yi Uygulamalar<\/h3>\n<p>React uygulamalar\u0131 geli\u015ftirirken sadece kod yazmak de\u011fil, ayn\u0131 zamanda s\u00fcrd\u00fcr\u00fclebilir, \u00f6l\u00e7eklenebilir ve okunabilir kod yazmak da \u00f6nemlidir. \u0130\u015fte baz\u0131 en iyi uygulamalar:<\/p>\n<h4>Bile\u015fenleri Yeniden Kullan\u0131labilirlik ve Mod\u00fclerlik<\/h4>\n<p>Bile\u015fenlerinizi k\u00fc\u00e7\u00fck, odaklanm\u0131\u015f ve tek bir sorumlulu\u011fa sahip olacak \u015fekilde tasarlay\u0131n. Bu, bile\u015fenlerinizi farkl\u0131 yerlerde yeniden kullanman\u0131z\u0131 kolayla\u015ft\u0131r\u0131r ve kod tekrar\u0131n\u0131 azalt\u0131r. \u00d6rne\u011fin, bir buton veya bir input alan\u0131 i\u00e7in genel bir bile\u015fen olu\u015fturabilirsiniz.<\/p>\n<h4>Kod Kalitesi ve Okunabilirlik<\/h4>\n<p>Temiz, d\u00fczenli ve iyi yorumlanm\u0131\u015f kod yazmaya \u00f6zen g\u00f6sterin. Anlaml\u0131 de\u011fi\u015fken ve fonksiyon isimleri kullan\u0131n. ESLint ve Prettier gibi ara\u00e7lar, kodunuzu tutarl\u0131 bir \u015fekilde bi\u00e7imlendirmenize ve potansiyel hatalar\u0131 yakalaman\u0131za yard\u0131mc\u0131 olabilir.<\/p>\n<h4>Hata Ay\u0131klama (Debugging) Teknikleri<\/h4>\n<p>Taray\u0131c\u0131n\u0131z\u0131n geli\u015ftirici ara\u00e7lar\u0131 (\u00f6zellikle \"Elements\" ve \"Console\" sekmeleri) ve React Developer Tools eklentisi, React uygulamalar\u0131n\u0131zdaki hatalar\u0131 ay\u0131klamak i\u00e7in vazge\u00e7ilmezdir. State ve prop'lar\u0131 inceleyebilir, bile\u015fen a\u011fac\u0131n\u0131 g\u00f6rebilir ve performans sorunlar\u0131n\u0131 tespit edebilirsiniz.<\/p>\n<h4>Versiyon Kontrol\u00fc (Git) Kullan\u0131m\u0131<\/h4>\n<p>Projelerinizi Git ile versiyon kontrol sisteminde y\u00f6netmek, de\u011fi\u015fiklikleri takip etmek, farkl\u0131 \u00f6zellikler \u00fczerinde \u00e7al\u0131\u015fmak ve ekip \u00fcyeleriyle i\u015fbirli\u011fi yapmak i\u00e7in hayati \u00f6neme sahiptir. D\u00fczenli commit'ler yap\u0131n ve anlaml\u0131 commit mesajlar\u0131 yaz\u0131n.<\/p>\n<h3>Sonu\u00e7 ve \u0130leri Ad\u0131mlar<\/h3>\n<p>Bu makalede, d\u00f6rt farkl\u0131 React uygulamas\u0131 geli\u015ftirerek React'\u0131n temelden ileri seviyeye kadar bir\u00e7ok \u00f6zelli\u011fini ke\u015ffettik. Duyarl\u0131 bir kartvizit ile bile\u015fen ve prop temellerini att\u0131k, etkile\u015fimli bir portf\u00f6y ile state ve olay y\u00f6netimini \u00f6\u011frendik, yap\u0131lacaklar listesi ile liste render etme ve CRUD i\u015flemlerini uygulad\u0131k ve son olarak Noel dilek listesi ile yerel depolama ve daha karma\u015f\u0131k state y\u00f6netimini deneyimledik. Bu projeler, React \u00f6\u011frenme yolculu\u011funuzda sa\u011flam bir temel olu\u015fturacakt\u0131r.<\/p>\n<p>React ekosistemi olduk\u00e7a geni\u015ftir. \u00d6\u011frendiklerinizin \u00fczerine in\u015fa etmek i\u00e7in React Router ile navigasyon, Redux veya Zustand gibi daha geli\u015fmi\u015f state y\u00f6netim k\u00fct\u00fcphaneleri, Next.js veya Gatsby gibi \u00e7er\u00e7evelerle sunucu taraf\u0131 render etme (SSR) veya statik site olu\u015fturma, ve birim\/entegrasyon testleri gibi konular\u0131 ara\u015ft\u0131rmaya devam edebilirsiniz. Kendi yarat\u0131c\u0131 projelerinizi geli\u015ftirmekten \u00e7ekinmeyin; pratik yapmak, en iyi \u00f6\u011frenme y\u00f6ntemidir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<h4>React'a yeni ba\u015flayanlar i\u00e7in hangi uygulama ile ba\u015flamal\u0131y\u0131m?<\/h4>\n<p>React'a yeni ba\u015fl\u0131yorsan\u0131z, \"Duyarl\u0131 Bir Dijital Kartvizit\" veya \"Etkile\u015fimli Bir Portf\u00f6y Sayfas\u0131\" gibi daha basit uygulamalarla ba\u015flaman\u0131z\u0131 \u00f6neririz. Bu projeler, React'\u0131n temel bile\u015fen ve prop mant\u0131\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h4>Bu uygulamalar\u0131 geli\u015ftirirken hangi ara\u00e7lar\u0131 kullanmal\u0131y\u0131m?<\/h4>\n<p>Temel olarak bir kod d\u00fczenleyiciye (VS Code gibi), Node.js ve npm\/yarn paket y\u00f6neticisine ihtiyac\u0131n\u0131z olacak. Projeleri ba\u015flatmak i\u00e7in <code>create-react-app<\/code> veya Vite gibi ara\u00e7lar\u0131 kullanabilirsiniz. Taray\u0131c\u0131 geli\u015ftirici ara\u00e7lar\u0131 ve React Developer Tools eklentisi hata ay\u0131klama i\u00e7in \u00e7ok faydal\u0131d\u0131r.<\/p>\n<h4>Daha karma\u015f\u0131k uygulamalar i\u00e7in ne \u00f6\u011frenmeliyim?<\/h4>\n<p>Daha karma\u015f\u0131k uygulamalar i\u00e7in React Router ile client-side routing, Redux\/Zustand\/Context API ile global state y\u00f6netimi, API entegrasyonlar\u0131 (veri \u00e7ekme), form k\u00fct\u00fcphaneleri (Formik, React Hook Form) ve test framework'leri (Jest, React Testing Library) gibi konular\u0131 \u00f6\u011frenmeniz faydal\u0131 olacakt\u0131r.<\/p>\n<h4>React bile\u015fenlerini nas\u0131l daha duyarl\u0131 hale getirebilirim?<\/h4>\n<p>Duyarl\u0131 tasar\u0131m i\u00e7in CSS media query'leri, Flexbox ve CSS Grid gibi modern CSS tekniklerini kullanmal\u0131s\u0131n\u0131z. Ayr\u0131ca, baz\u0131 UI k\u00fct\u00fcphaneleri (Material-UI, Ant Design, Chakra UI) veya utility-first CSS \u00e7er\u00e7eveleri (Tailwind CSS) duyarl\u0131 bile\u015fenler olu\u015fturmay\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<h4>State y\u00f6netiminde <code>useState<\/code> d\u0131\u015f\u0131nda hangi se\u00e7enekler var?<\/h4>\n<p><code>useState<\/code> hook'u basit state'ler i\u00e7in harikad\u0131r. Ancak daha karma\u015f\u0131k veya global state y\u00f6netimi i\u00e7in <code>useReducer<\/code> hook'u, React Context API veya Redux, Zustand, Recoil gibi \u00fc\u00e7\u00fcnc\u00fc taraf state y\u00f6netim k\u00fct\u00fcphanelerini d\u00fc\u015f\u00fcnebilirsiniz. Se\u00e7im, uygulaman\u0131z\u0131n b\u00fcy\u00fckl\u00fc\u011f\u00fcne ve karma\u015f\u0131kl\u0131\u011f\u0131na ba\u011fl\u0131d\u0131r.<\/p>\n","protected":false},"excerpt":{"rendered":"React, Facebook taraf\u0131ndan geli\u015ftirilen ve kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak i\u00e7in kullan\u0131lan a\u00e7\u0131k kaynakl\u0131 bir JavaScript k\u00fct\u00fcphanesidir. Temel fe&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[128],"tags":[],"class_list":{"0":"post-39368","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-react","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine\" \/>\n<meta property=\"og:description\" content=\"React, Facebook taraf\u0131ndan geli\u015ftirilen ve kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak i\u00e7in kullan\u0131lan a\u00e7\u0131k kaynakl\u0131 bir JavaScript k\u00fct\u00fcphanesidir. Temel fe...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-19T17:30:40+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine\",\"datePublished\":\"2026-02-19T17:30:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/\"},\"wordCount\":2216,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"React\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/\",\"name\":\"React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-19T17:30:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/","og_locale":"tr_TR","og_type":"article","og_title":"React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine","og_description":"React, Facebook taraf\u0131ndan geli\u015ftirilen ve kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak i\u00e7in kullan\u0131lan a\u00e7\u0131k kaynakl\u0131 bir JavaScript k\u00fct\u00fcphanesidir. Temel fe...","og_url":"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-19T17:30:40+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"12 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine","datePublished":"2026-02-19T17:30:40+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/"},"wordCount":2216,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["React"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/","url":"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/","name":"React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-19T17:30:40+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/react-ile-4-uygulama-gelistirme-rehberi-kartvizitten-dilek-listesine\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"React ile 4 Uygulama Geli\u015ftirme Rehberi: Kartvizitten Dilek Listesine"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=39368"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39368\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}