{"id":34868,"date":"2025-11-23T02:31:03","date_gmt":"2025-11-22T23:31:03","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/"},"modified":"2025-11-23T02:31:03","modified_gmt":"2025-11-22T23:31:03","slug":"reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/","title":{"rendered":"ReactJS \u00d6\u011frenimi ve 100 G\u00fcn Kod Yazma Maceras\u0131"},"content":{"rendered":"<p><body><\/p>\n<p>ReactJS&#8217;i s\u0131f\u0131rdan \u00f6\u011frenmek ve g\u00fcnl\u00fck kod yazma al\u0131\u015fkanl\u0131\u011f\u0131 kazanmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehberde, ReactJS temellerinden ileri seviye konulara, pratik projelerle 100 g\u00fcnl\u00fck kodlama ser\u00fcveninizi nas\u0131l y\u00f6netece\u011finize dair t\u00fcm ipu\u00e7lar\u0131n\u0131 bulacaks\u0131n\u0131z. Bu yolculuk, sadece kod yazma becerilerinizi geli\u015ftirmekle kalmayacak, ayn\u0131 zamanda problem \u00e7\u00f6zme yetene\u011finizi de zirveye ta\u015f\u0131yacak.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz web geli\u015ftirme d\u00fcnyas\u0131nda, dinamik ve kullan\u0131c\u0131 dostu aray\u00fczler olu\u015fturmak adeta bir zorunluluk haline gelmi\u015ftir. Bu ba\u011flamda, Facebook taraf\u0131ndan geli\u015ftirilen a\u00e7\u0131k kaynakl\u0131 bir JavaScript k\u00fct\u00fcphanesi olan ReactJS, \u00f6zellikle interaktif kullan\u0131c\u0131 aray\u00fczleri (UI) geli\u015ftirmek i\u00e7in en pop\u00fcler ve g\u00fc\u00e7l\u00fc ara\u00e7lardan biri olarak \u00f6ne \u00e7\u0131kmaktad\u0131r. ReactJS, bile\u015fen tabanl\u0131 yap\u0131s\u0131yla karma\u015f\u0131k aray\u00fczleri k\u00fc\u00e7\u00fck, yeniden kullan\u0131labilir par\u00e7alara b\u00f6lerek geli\u015ftirme s\u00fcrecini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde basitle\u015ftirir ve h\u0131zland\u0131r\u0131r. Bu, \u00f6zellikle b\u00fcy\u00fck ve \u00f6l\u00e7eklenebilir uygulamalar geli\u015ftirirken kar\u015f\u0131la\u015f\u0131lan zorluklar\u0131 azaltan kritik bir avantajd\u0131r. Ancak sadece bir arac\u0131 bilmek yeterli de\u011fildir; s\u00fcrekli pratik ve disiplinli bir \u00f6\u011frenme s\u00fcreci de ba\u015far\u0131 i\u00e7in hayati \u00f6neme sahiptir. Bu nedenle, &#8220;100 G\u00fcn Kod Yazma&#8221; gibi bir taahh\u00fct, \u00f6\u011frenilen bilgileri peki\u015ftirmek ve ger\u00e7ek d\u00fcnya projelerinde uygulama becerisini geli\u015ftirmek i\u00e7in m\u00fckemmel bir y\u00f6ntem sunar. Bu taahh\u00fct, kodlama kaslar\u0131n\u0131z\u0131 g\u00fc\u00e7lendirecek, problem \u00e7\u00f6zme yeteneklerinizi keskinle\u015ftirecek ve sizi sekt\u00f6rdeki rekabet\u00e7i ortama haz\u0131rlayacakt\u0131r.<\/p>\n<p>ReactJS&#8217;in pop\u00fclaritesi, sadece geli\u015ftirme kolayl\u0131\u011f\u0131ndan de\u011fil, ayn\u0131 zamanda y\u00fcksek performans\u0131ndan ve geni\u015f topluluk deste\u011finden de kaynaklan\u0131r. Sanal DOM (Virtual DOM) kullan\u0131m\u0131 sayesinde, React, geleneksel DOM manip\u00fclasyonlar\u0131na k\u0131yasla \u00e7ok daha h\u0131zl\u0131 ve verimli g\u00fcncellemeler sunar. Bu da kullan\u0131c\u0131lar\u0131n daha ak\u0131c\u0131 ve tepkisel bir deneyim ya\u015famas\u0131n\u0131 sa\u011flar. Ayr\u0131ca, React ekosistemi, Redux, React Router ve Next.js gibi bir\u00e7ok g\u00fc\u00e7l\u00fc ara\u00e7 ve k\u00fct\u00fcphane ile zenginle\u015fmi\u015ftir, bu da geli\u015ftiricilere geni\u015f bir \u00e7\u00f6z\u00fcm yelpazesi sunar. S\u00fcrekli geli\u015fen bu ekosistemde g\u00fcncel kalabilmek i\u00e7in d\u00fczenli kod yazma al\u0131\u015fkanl\u0131\u011f\u0131 kritik \u00f6nem ta\u015f\u0131r. Her g\u00fcn belirli bir s\u00fcre kod yazmak, bilginizi taze tutman\u0131n yan\u0131 s\u0131ra, yeni kavramlar\u0131 denemek ve kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z hatalardan ders \u00e7\u0131karmak i\u00e7in e\u015fsiz bir f\u0131rsat sunar. Bu s\u00fcre\u00e7, sadece teknik bilginizi art\u0131rmakla kalmaz, ayn\u0131 zamanda zorluklar kar\u015f\u0131s\u0131nda y\u0131lmama ve \u00e7\u00f6z\u00fcm odakl\u0131 d\u00fc\u015f\u00fcnme becerilerinizi de geli\u015ftirir. K\u0131sacas\u0131, ReactJS \u00f6\u011frenmek ve 100 g\u00fcn boyunca d\u00fczenli kod yazmak, modern web geli\u015ftirme kariyeriniz i\u00e7in sa\u011flam bir temel olu\u015fturman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<p>Bu makale boyunca, ReactJS&#8217;in temel ta\u015flar\u0131ndan ba\u015flayarak ileri seviye konulara do\u011fru ad\u0131m ad\u0131m ilerleyece\u011fiz. Her b\u00f6l\u00fcm, okuyucunun konuyu s\u0131f\u0131rdan anlayabilece\u011fi \u015fekilde tasarlanm\u0131\u015ft\u0131r. Uygulamal\u0131 \u00f6rnekler, ger\u00e7ek d\u00fcnya senaryolar\u0131 ve pratik ipu\u00e7lar\u0131 ile \u00f6\u011frenme deneyiminizi zenginle\u015ftirece\u011fiz. \u00d6zellikle &#8220;100 G\u00fcn Kod Yazma&#8221; challenge&#8217;\u0131n\u0131z\u0131 nas\u0131l planlayaca\u011f\u0131n\u0131z, motivasyonunuzu nas\u0131l koruyaca\u011f\u0131n\u0131z ve bu s\u00fcre\u00e7ten en iyi \u015fekilde nas\u0131l faydalanaca\u011f\u0131n\u0131z konusunda kapsaml\u0131 bir yol haritas\u0131 sunaca\u011f\u0131z. Unutmay\u0131n, kodlama bir maratondur, sprint de\u011fil. D\u00fczenli ve istikrarl\u0131 ad\u0131mlar, sizi hedeflerinize ula\u015ft\u0131racak en kesin yoldur. Dolay\u0131s\u0131yla, bu rehber, sadece ReactJS&#8217;i \u00f6\u011frenmekle kalmayacak, ayn\u0131 zamanda kal\u0131c\u0131 bir kodlama al\u0131\u015fkanl\u0131\u011f\u0131 edinmenize de yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2>ReactJS&#8217;e Ad\u0131m Ad\u0131m Ba\u015flang\u0131\u00e7: Temel Kavramlar Nelerdir?<\/h2>\n<p>ReactJS d\u00fcnyas\u0131na ad\u0131m atarken, \u00f6ncelikle baz\u0131 temel kavramlar\u0131 anlamak hayati \u00f6nem ta\u015f\u0131r. Bu kavramlar, React&#8217;in nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, neden bu kadar pop\u00fcler oldu\u011funu ve uygulamalar\u0131n\u0131z\u0131 nas\u0131l daha etkili bir \u015fekilde geli\u015ftirebilece\u011finizi anlaman\u0131za yard\u0131mc\u0131 olacakt\u0131r. \u0130lk olarak, React&#8217;in en temel yap\u0131 ta\u015f\u0131 olan \u201cbile\u015fen (component)\u201d kavram\u0131yla ba\u015flayal\u0131m. React&#8217;teki her \u015fey bir bile\u015fendir; bir buton, bir navigasyon \u00e7ubu\u011fu, hatta t\u00fcm sayfan\u0131z bile bir bile\u015fen olabilir. Bile\u015fenler, ba\u011f\u0131ms\u0131z ve yeniden kullan\u0131labilir kod par\u00e7ac\u0131klar\u0131d\u0131r. Bu mod\u00fcler yap\u0131, kodun daha d\u00fczenli olmas\u0131n\u0131, bak\u0131m\u0131n\u0131n kolayla\u015fmas\u0131n\u0131 ve farkl\u0131 yerlerde tekrar tekrar kullan\u0131labilmesini sa\u011flar. Temelde iki t\u00fcr bile\u015fen vard\u0131r: fonksiyon bile\u015fenleri (functional components) ve s\u0131n\u0131f bile\u015fenleri (class components). Modern React geli\u015ftirmesinde, genellikle fonksiyon bile\u015fenleri ve React Hook&#8217;lar\u0131 tercih edilir, \u00e7\u00fcnk\u00fc daha basit ve daha okunabilir bir s\u00f6zdizimi sunarlar.<\/p>\n<h3>JSX Nedir ve Neden Kullan\u0131l\u0131r?<\/h3>\n<p>React&#8217;in bir di\u011fer ay\u0131rt edici \u00f6zelli\u011fi ise \u201cJSX\u201dtir. JSX, JavaScript XML anlam\u0131na gelir ve React bile\u015fenlerinde HTML benzeri bir s\u00f6zdizimi kullanarak aray\u00fcz\u00fcn\u00fcz\u00fc tan\u0131mlaman\u0131z\u0131 sa\u011flar. Geleneksel olarak, web geli\u015ftiriciler HTML, CSS ve JavaScript&#8217;i ayr\u0131 ayr\u0131 ele al\u0131rken, React ve JSX bu \u00fc\u00e7\u00fcn\u00fc birle\u015ftirerek bile\u015fenlerin i\u00e7erisinde hem yap\u0131y\u0131 hem de mant\u0131\u011f\u0131 bir arada tutar. Bu, \u00f6zellikle karma\u015f\u0131k UI elemanlar\u0131 \u00fczerinde \u00e7al\u0131\u015f\u0131rken okunabilirli\u011fi ve geli\u015ftirme h\u0131z\u0131n\u0131 art\u0131r\u0131r. \u00d6rne\u011fin, bir butonun g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc (HTML) ve t\u0131klama olay\u0131n\u0131 (JavaScript) ayn\u0131 JSX kodu i\u00e7erisinde tan\u0131mlayabilirsiniz. JSX, taray\u0131c\u0131lar taraf\u0131ndan do\u011frudan anla\u015f\u0131lamaz; bu nedenle, Babel gibi bir derleyici (transpiler) arac\u0131l\u0131\u011f\u0131yla standart JavaScript&#8217;e d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi gerekir. Bu d\u00f6n\u00fc\u015ft\u00fcrme i\u015flemi genellikle geli\u015ftirme ortam\u0131 kurulumu s\u0131ras\u0131nda otomatik olarak halledilir, b\u00f6ylece siz sadece JSX yazmaya odaklanabilirsiniz.<\/p>\n<pre><code>\n    import React from 'react';\n\n    function Selamlama(props) {\n      return <h1>Merhaba, {props.ad}!<\/h1>;\n    }\n\n    const App = () => {\n      return (\n        <div>\n          <Selamlama ad=\"D\u00fcnya\" \/>\n          <Selamlama ad=\"React\" \/>\n        <\/div>\n      );\n    };\n\n    export default App;\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"expert-tip\">Uzman \u0130pucu: JSX kullan\u0131rken dikkat etmeniz gereken en \u00f6nemli nokta, HTML etiketlerinin kapan\u0131\u015f etiketlerinin (\u00f6rne\u011fin <img \/> veya <input \/>) her zaman eklenmesi gerekti\u011fidir. Ayr\u0131ca, HTML \u00f6zelliklerini camelCase format\u0131nda yazman\u0131z gerekir (\u00f6rne\u011fin class yerine className).<\/div>\n<h3>State ve Props Kavramlar\u0131: Veri Ak\u0131\u015f\u0131n\u0131 Y\u00f6netmek<\/h3>\n<p>React'teki veri ak\u0131\u015f\u0131n\u0131 anlamak i\u00e7in \u201cstate\u201d (durum) ve \u201cprops\u201d (\u00f6zellikler) kavramlar\u0131 kritik \u00f6neme sahiptir. Props, bile\u015fenler aras\u0131nda veri aktar\u0131m\u0131n\u0131 sa\u011flayan mekanizmad\u0131r. Bir \u00fcst bile\u015fen, alt bile\u015fene veri g\u00f6ndermek i\u00e7in props kullan\u0131r. Props'lar tek y\u00f6nl\u00fcd\u00fcr; yani bir alt bile\u015fen, kendisine g\u00f6nderilen props'lar\u0131 do\u011frudan de\u011fi\u015ftiremez. Bu, veri ak\u0131\u015f\u0131n\u0131 daha tahmin edilebilir ve izlenebilir hale getirir. \u00d6rne\u011fin, bir <code>KullaniciKarti<\/code> bile\u015fenine <code>ad<\/code>, <code>soyad<\/code> ve <code>resimUrl<\/code> gibi bilgileri props olarak g\u00f6nderebilirsiniz. State ise bir bile\u015fenin kendi i\u00e7inde y\u00f6netti\u011fi ve zamanla de\u011fi\u015febilen verilerdir. Bir bile\u015fenin state'i de\u011fi\u015fti\u011finde, React o bile\u015feni ve varsa alt bile\u015fenlerini otomatik olarak yeniden render eder. \u00d6rne\u011fin, bir saya\u00e7 uygulamas\u0131nda, sayac\u0131n mevcut de\u011feri (count) bir state olarak tutulur. <code>useState<\/code> Hook'u, fonksiyon bile\u015fenlerinde state y\u00f6netimi i\u00e7in kullan\u0131l\u0131r ve bu sayede state de\u011ferlerini tan\u0131mlaman\u0131z\u0131 ve g\u00fcncellemenizi sa\u011flar. Bu iki kavram\u0131n do\u011fru bir \u015fekilde anla\u015f\u0131lmas\u0131, dinamik ve interaktif React uygulamalar\u0131 geli\u015ftirmenin temelini olu\u015fturur.<\/p>\n<h3>Virtual DOM ve Performans\u0131 Nas\u0131l Etkiler?<\/h3>\n<p>React'in y\u00fcksek performans\u0131n\u0131n arkas\u0131ndaki temel mekanizmalardan biri \u201cVirtual DOM\u201ddur. Geleneksel web geli\u015ftirmede, bir kullan\u0131c\u0131 aray\u00fcz\u00fcnde k\u00fc\u00e7\u00fck bir de\u011fi\u015fiklik bile olsa, taray\u0131c\u0131 t\u00fcm DOM'u yeniden \u00e7izmek zorunda kalabilir. Bu i\u015flem, \u00f6zellikle b\u00fcy\u00fck ve karma\u015f\u0131k uygulamalarda performans d\u00fc\u015f\u00fc\u015flerine yol a\u00e7abilir. React, bu sorunu \u00e7\u00f6zmek i\u00e7in Virtual DOM ad\u0131 verilen hafif bir kopya olu\u015fturur. Bir bile\u015fenin state'i veya props'lar\u0131 de\u011fi\u015fti\u011finde, React \u00f6nce bu de\u011fi\u015fikli\u011fi Virtual DOM \u00fczerinde uygular. Ard\u0131ndan, g\u00fcncellenmi\u015f Virtual DOM'u, bir \u00f6nceki Virtual DOM haliyle kar\u015f\u0131la\u015ft\u0131r\u0131r (diffing algoritmas\u0131). Bu kar\u015f\u0131la\u015ft\u0131rma sonucunda sadece ger\u00e7ekten de\u011fi\u015fen k\u0131s\u0131mlar tespit edilir ve sadece bu de\u011fi\u015fiklikler ger\u00e7ek DOM'a uygulan\u0131r. Bu s\u00fcrece \"reconciliation\" denir. Virtual DOM, gereksiz DOM manip\u00fclasyonlar\u0131n\u0131 ortadan kald\u0131rarak performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r ve kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fcn daha h\u0131zl\u0131 ve verimli bir \u015fekilde g\u00fcncellenmesini sa\u011flar. Bu sayede, geli\u015ftiriciler performans endi\u015fesi duymadan karma\u015f\u0131k UI'lar tasarlayabilirler.<\/p>\n<div class=\"expert-tip\">Uzman \u0130pucu: Sanal DOM'un avantajlar\u0131n\u0131 en iyi \u015fekilde kullanmak i\u00e7in, state g\u00fcncellemelerini m\u00fcmk\u00fcn oldu\u011funca k\u00fc\u00e7\u00fck ve hedefe y\u00f6nelik tutmaya \u00f6zen g\u00f6sterin. Gereksiz state g\u00fcncellemelerinden ka\u00e7\u0131nmak, uygulaman\u0131z\u0131n daha h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131na yard\u0131mc\u0131 olacakt\u0131r.<\/div>\n<h3>Geli\u015ftirme Ortam\u0131 Kurulumu: Haz\u0131rl\u0131k S\u00fcreci<\/h3>\n<p>ReactJS ile geli\u015ftirmeye ba\u015flamadan \u00f6nce bir geli\u015ftirme ortam\u0131 kurman\u0131z gerekir. Bu s\u00fcre\u00e7 olduk\u00e7a basittir. \u0130lk olarak, makinenizde Node.js'in kurulu olmas\u0131 gerekmektedir, \u00e7\u00fcnk\u00fc React projeleri genellikle Node.js tabanl\u0131 ara\u00e7lar\u0131 (npm veya yarn gibi paket y\u00f6neticileri) kullan\u0131r. Node.js'i <a href=\"https:\/\/nodejs.org\/\" target=\"_blank\">resmi web sitesinden<\/a> indirebilirsiniz. Node.js kurulumuyla birlikte npm (Node Package Manager) de otomatik olarak kurulacakt\u0131r. Daha sonra, React projenizi h\u0131zl\u0131 ve kolay bir \u015fekilde ba\u015flatmak i\u00e7in Create React App (CRA) arac\u0131n\u0131 kullanabilirsiniz. CRA, modern bir React uygulamas\u0131 olu\u015fturmak i\u00e7in gerekli t\u00fcm yap\u0131land\u0131rmalar\u0131 (Babel, Webpack vb.) sizin i\u00e7in otomatik olarak yapar, b\u00f6ylece kod yazmaya hemen ba\u015flayabilirsiniz. Terminalinizde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rarak yeni bir React projesi olu\u015fturabilirsiniz:<\/p>\n<pre><code>\n    npx create-react-app benim-ilk-react-uygulamam\n    cd benim-ilk-react-uygulamam\n    npm start\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komutlar s\u0131ras\u0131yla yeni bir React projesi olu\u015fturur, projenin dizinine gider ve geli\u015ftirme sunucusunu ba\u015flat\u0131r. Taray\u0131c\u0131n\u0131zda otomatik olarak <code>http:\/\/localhost:3000<\/code> adresinde \u00e7al\u0131\u015fan bir React uygulamas\u0131n\u0131 g\u00f6rmelisiniz. Bu kurulum ad\u0131mlar\u0131, React yolculu\u011funuz i\u00e7in sa\u011flam bir ba\u015flang\u0131\u00e7 noktas\u0131 sunar ve t\u00fcm temel kavramlar\u0131 pratik bir \u015fekilde uygulaman\u0131za olanak tan\u0131r.<\/p>\n<h2>100 G\u00fcn Kodlama Ser\u00fcveninizi Nas\u0131l Planlamal\u0131s\u0131n\u0131z? Etkili Bir Yol Haritas\u0131<\/h2>\n<p>ReactJS \u00f6\u011frenme ve uygulama yolculu\u011funuzda \"100 G\u00fcn Kod Yazma\" challenge'\u0131, sadece teknik bilginizi art\u0131rmakla kalmayacak, ayn\u0131 zamanda s\u00fcrd\u00fcr\u00fclebilir bir \u00f6\u011frenme ve geli\u015fme al\u0131\u015fkanl\u0131\u011f\u0131 edinmenize de yard\u0131mc\u0131 olacakt\u0131r. Bu ser\u00fcvenin ba\u015far\u0131l\u0131 olabilmesi i\u00e7in iyi bir planlama ve stratejik bir yakla\u015f\u0131m \u015fartt\u0131r. \u00d6ncelikle, genel hedeflerinizi belirleyerek ba\u015flay\u0131n. Bu, belirli bir say\u0131da React projesi tamamlamak, belirli bir konuyu derinlemesine \u00f6\u011frenmek veya sadece her g\u00fcn kod yazma disiplinini kazanmak olabilir. Hedeflerinizin SMART (Specific, Measurable, Achievable, Relevant, Time-bound) kriterlerine uygun oldu\u011fundan emin olun. \u00d6rne\u011fin, \"100 g\u00fcn i\u00e7inde 5 k\u00fc\u00e7\u00fck React projesi geli\u015ftirece\u011fim ve React Hook'lar\u0131n\u0131 etkin bir \u015fekilde kullanmay\u0131 \u00f6\u011frenece\u011fim\" gibi somut bir hedef belirlemek, ilerlemenizi \u00f6l\u00e7menize ve motivasyonunuzu y\u00fcksek tutman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Proje Fikirleri ve Kademeli \u0130lerleme<\/h3>\n<p>Her g\u00fcn kod yazmak i\u00e7in s\u00fcrekli yeni ve ilgi \u00e7ekici projelere ihtiyac\u0131n\u0131z olacak. Ba\u015flang\u0131\u00e7ta basit projelerle ba\u015flay\u0131n ve kademeli olarak daha karma\u015f\u0131k projelere ge\u00e7in. \u0130\u015fte size ilham verebilecek baz\u0131 proje fikirleri:<\/p>\n<ul>\n<li><strong>G\u00fcn 1-20: Temel React Kavramlar\u0131 (Basit Uygulamalar)<\/strong>\n<ul>\n<li><strong>To-Do List Uygulamas\u0131:<\/strong> Ekleme, silme, tamamlama \u00f6zellikleriyle.<\/li>\n<li><strong>Saya\u00e7 Uygulamas\u0131:<\/strong> Art\u0131rma, azaltma, s\u0131f\u0131rlama butonlar\u0131yla.<\/li>\n<li><strong>Hava Durumu Uygulamas\u0131:<\/strong> Basit bir API kullanarak (\u00f6rne\u011fin OpenWeatherMap) \u015fehir baz\u0131nda hava durumu g\u00f6sterimi.<\/li>\n<\/ul>\n<\/li>\n<li><strong>G\u00fcn 21-50: Orta Seviye React ve Hook'lar (Daha Karma\u015f\u0131k Veri Y\u00f6netimi)<\/strong>\n<ul>\n<li><strong>Rehber Uygulamas\u0131:<\/strong> \u0130sim, telefon numaras\u0131 kaydetme, arama ve d\u00fczenleme \u00f6zellikleri.<\/li>\n<li><strong>Basit Bir E-Ticaret Sepeti:<\/strong> \u00dcr\u00fcn listeleme, sepete ekleme\/\u00e7\u0131karma, toplam tutar hesaplama.<\/li>\n<li><strong>Form Do\u011frulama Uygulamas\u0131:<\/strong> Kullan\u0131c\u0131 giri\u015flerini do\u011frulama ve hata mesajlar\u0131 g\u00f6sterme.<\/li>\n<\/ul>\n<\/li>\n<li><strong>G\u00fcn 51-100: \u0130leri Seviye React ve Ek K\u00fct\u00fcphaneler (Ger\u00e7ek D\u00fcnya Senaryolar\u0131)<\/strong>\n<ul>\n<li><strong>Blog Uygulamas\u0131:<\/strong> Yaz\u0131 ekleme, g\u00f6r\u00fcnt\u00fcleme, d\u00fczenleme (Redux veya Context API ile state y\u00f6netimi).<\/li>\n<li><strong>Film\/Dizi Arama Uygulamas\u0131:<\/strong> Harici bir API (\u00f6rne\u011fin TMDB) kullanarak arama, detay g\u00f6r\u00fcnt\u00fcleme.<\/li>\n<li><strong>Ki\u015fisel Portfolyo Sitesi:<\/strong> React Router ile sayfalar aras\u0131 ge\u00e7i\u015f, animasyonlar.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Bu projeler, farkl\u0131 React \u00f6zelliklerini denemenize ve \u00f6\u011frendiklerinizi peki\u015ftirmenize olanak tan\u0131r. Her projenin sonunda, kodunuzu g\u00f6zden ge\u00e7irin, refactor edin ve iyile\u015ftirmeler yapmay\u0131 al\u0131\u015fkanl\u0131k haline getirin.<\/p>\n<h3>Ger\u00e7ek D\u00fcnya Senaryosu: Elif'in 100 G\u00fcnl\u00fck React Maceras\u0131<\/h3>\n<p>Elif, bir pazarlama uzman\u0131yd\u0131 ancak yaz\u0131l\u0131ma ilgi duyuyordu ve frontend geli\u015ftirici olmak istiyordu. ReactJS'in pop\u00fclaritesini g\u00f6rd\u00fckten sonra, 100 g\u00fcnl\u00fck bir kodlama challenge'\u0131na girmeye karar verdi. \u0130lk 20 g\u00fcn boyunca, Elif her g\u00fcn en az bir saatini React'in temel bile\u015fenlerini, JSX'i ve state\/props'lar\u0131 anlamaya ay\u0131rd\u0131. K\u00fc\u00e7\u00fck bir To-Do list uygulamas\u0131 ve basit bir saya\u00e7 geli\u015ftirdi. Hatalar yapt\u0131, ancak her seferinde \u00e7\u00f6z\u00fcmleri ara\u015ft\u0131rarak \u00f6\u011frendi.<\/p>\n<p>Sonraki 30 g\u00fcn, Elif i\u00e7in biraz daha zorlay\u0131c\u0131 oldu. API entegrasyonlar\u0131n\u0131 ve <code>useEffect<\/code> hook'unu \u00f6\u011frenmek i\u00e7in bir hava durumu uygulamas\u0131 \u00fczerinde \u00e7al\u0131\u015ft\u0131. Bu s\u00fcre\u00e7te kar\u015f\u0131la\u015ft\u0131\u011f\u0131 hatalar onu motive etti; \u00e7\u00f6z\u00fcmlerini Stack Overflow ve React dok\u00fcmantasyonunda arayarak problem \u00e7\u00f6zme becerilerini geli\u015ftirdi. Bir sonraki a\u015famada ise, basit bir e-ticaret sepeti uygulamas\u0131 yaparak state y\u00f6netimini derinlemesine kavrad\u0131. \u00d6zellikle sepetin durumunu y\u00f6netmek, \u00fcr\u00fcn ekleme ve \u00e7\u0131karma mant\u0131\u011f\u0131n\u0131 kurmak onun i\u00e7in \u00f6nemli bir d\u00f6n\u00fcm noktas\u0131 oldu.<\/p>\n<p>Elif, 100 g\u00fcnl\u00fck ser\u00fcveninin son 50 g\u00fcn\u00fcnde ise daha karma\u015f\u0131k projelere y\u00f6neldi. Bir blog uygulamas\u0131 geli\u015ftirmeye ba\u015flad\u0131 ve bu s\u00fcre\u00e7te React Router ile sayfa navigasyonunu, Context API ile global state y\u00f6netimini \u00f6\u011frendi. Mobil uyumlu tasar\u0131m\u0131 da g\u00f6z \u00f6n\u00fcnde bulundurarak, uygulamalar\u0131n\u0131 farkl\u0131 ekran boyutlar\u0131na uygun hale getirmeye \u00e7al\u0131\u015ft\u0131. G\u00fcnl\u00fck olarak kod yazd\u0131\u011f\u0131 s\u00fcrece, kar\u015f\u0131la\u015ft\u0131\u011f\u0131 sorunlar\u0131 not ald\u0131 ve \u00e7\u00f6z\u00fcmlerini GitHub'daki projesine ekledi. Bu s\u00fcre zarf\u0131nda, d\u00fczenli olarak kodunu payla\u015ft\u0131\u011f\u0131 online topluluklardan (Discord, Reddit) geri bildirimler ald\u0131 ve bu geri bildirimler onu daha da motive etti. 100 g\u00fcn\u00fcn sonunda Elif, sadece birka\u00e7 uygulama geli\u015ftirmekle kalmad\u0131, ayn\u0131 zamanda problem \u00e7\u00f6zme yetene\u011fi geli\u015fmi\u015f, \u00f6zg\u00fcvenli bir frontend geli\u015ftirici aday\u0131 haline geldi ve ilk staj ba\u015fvurusunu yapmaya haz\u0131rd\u0131. Elif'in hikayesi, d\u00fczenli pratik ve hedefe y\u00f6nelik \u00e7al\u0131\u015fman\u0131n ne kadar d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fc olabilece\u011fini g\u00f6steren g\u00fc\u00e7l\u00fc bir \u00f6rnektir.<\/p>\n<div class=\"expert-tip\">Uzman \u0130pucu: Her g\u00fcn kod yazma al\u0131\u015fkanl\u0131\u011f\u0131 kazanmak i\u00e7in \"Pomodoro Tekni\u011fi\"ni deneyebilirsiniz. 25 dakika kod yaz\u0131n, 5 dakika mola verin. Bu, odaklanman\u0131z\u0131 art\u0131r\u0131rken yorgunlu\u011funuzu da azaltacakt\u0131r.<\/div>\n<h2>React Uygulamas\u0131 Geli\u015ftirirken Bilmeniz Gereken \u00d6nemli Teknikler Nelerdir?<\/h2>\n<p>React uygulamalar\u0131 geli\u015ftirirken, sadece temel bile\u015fen ve JSX kavramlar\u0131n\u0131 bilmek yeterli de\u011fildir. Dinamik ve interaktif kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak i\u00e7in React'in sundu\u011fu \u00e7e\u015fitli tekniklere hakim olmak gerekmektedir. Bu teknikler, uygulaman\u0131z\u0131n daha verimli, okunabilir ve bak\u0131m\u0131 kolay olmas\u0131n\u0131 sa\u011flar. \u0130lk olarak, modern React geli\u015ftirmesinin temel ta\u015f\u0131 olan React Hook'lar\u0131na odaklanal\u0131m. Fonksiyon bile\u015fenlerinde state ve ya\u015fam d\u00f6ng\u00fcs\u00fc \u00f6zelliklerini kullanmam\u0131z\u0131 sa\u011flayan Hook'lar, kodumuzu daha d\u00fczenli ve anla\u015f\u0131l\u0131r hale getirir. En s\u0131k kullan\u0131lan Hook'lardan biri olan <code>useState<\/code>, fonksiyonel bile\u015fenlere durum (state) eklememizi sa\u011flar. Bu, bir bile\u015fenin kendi i\u00e7inde tuttu\u011fu ve zamanla de\u011fi\u015febilen verileri y\u00f6netmek i\u00e7in hayati \u00f6neme sahiptir. \u00d6rne\u011fin, bir butonun ka\u00e7 kez t\u0131kland\u0131\u011f\u0131n\u0131 takip etmek i\u00e7in <code>useState<\/code> kullanabiliriz.<\/p>\n<pre><code>\n    import React, { useState } from 'react';\n\n    function Sayac() {\n      const [sayi, setSayi] = useState(0); \/\/ sayi: mevcut de\u011fer, setSayi: de\u011feri g\u00fcncelleyen fonksiyon\n\n      return (\n        <div>\n          <p>Saya\u00e7: {sayi}<\/p>\n          <button onClick={() => setSayi(sayi + 1)}>Art\u0131r<\/button>\n          <button onClick={() => setSayi(sayi - 1)}>Azalt<\/button>\n          <button onClick={() => setSayi(0)}>S\u0131f\u0131rla<\/button>\n        <\/div>\n      );\n    }\n\n    export default Sayac;\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte <code>sayi<\/code> de\u011feri de\u011fi\u015fti\u011finde, React bile\u015feni otomatik olarak yeniden render edecek ve g\u00fcncel de\u011feri ekrana yans\u0131tacakt\u0131r. Bu durum y\u00f6netimi, React'in reaktif do\u011fas\u0131n\u0131n temelini olu\u015fturur.<\/p>\n<h3>Event Handling ve Ko\u015fullu Renderlama<\/h3>\n<p>Kullan\u0131c\u0131 etkile\u015fimlerini y\u00f6netmek i\u00e7in \u201cEvent Handling\u201d (Olay Y\u00f6netimi) tekniklerini bilmek \u00e7ok \u00f6nemlidir. React'te olaylar, HTML'deki olaylara benzer \u015fekilde adland\u0131r\u0131l\u0131r ancak camelCase format\u0131nda yaz\u0131l\u0131r (\u00f6rne\u011fin <code>onclick<\/code> yerine <code>onClick<\/code>). Bir olay\u0131 dinlemek i\u00e7in ilgili HTML elementine bir props olarak bir fonksiyon atars\u0131n\u0131z. Bu fonksiyon, olay tetiklendi\u011finde \u00e7al\u0131\u015f\u0131r. \u00d6rne\u011fin, bir butona t\u0131kland\u0131\u011f\u0131nda belirli bir i\u015flemi ger\u00e7ekle\u015ftirmek i\u00e7in <code>onClick<\/code> \u00f6zelli\u011fini kullan\u0131r\u0131z.<\/p>\n<p>\u201cKo\u015fullu Renderlama\u201d ise, belirli bir ko\u015fula g\u00f6re farkl\u0131 JSX bloklar\u0131n\u0131 render etme yetene\u011fidir. Bu, uygulaman\u0131z\u0131n durumuna ba\u011fl\u0131 olarak kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fcz\u00fcn dinamik olarak de\u011fi\u015fmesini sa\u011flar. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n giri\u015f yap\u0131p yapmad\u0131\u011f\u0131na ba\u011fl\u0131 olarak farkl\u0131 men\u00fc \u00f6\u011feleri g\u00f6sterebilirsiniz. Ko\u015fullu renderlama i\u00e7in <code>if\/else<\/code> deyimlerini, ternary operat\u00f6rlerini (<code>ko\u015ful ? trueDurum : falseDurum<\/code>) veya mant\u0131ksal <code>&&<\/code> operat\u00f6r\u00fcn\u00fc kullanabilirsiniz. Bu teknikler, uygulaman\u0131z\u0131n kullan\u0131c\u0131 deneyimini zenginle\u015ftirmenize ve dinamik i\u00e7erik sunman\u0131za olanak tan\u0131r.<\/p>\n<pre><code>\n    import React, { useState } from 'react';\n\n    function GirisKontrol() {\n      const [girisYapildi, setGirisYapildi] = useState(false);\n\n      return (\n        <div>\n          {girisYapildi ? (\n            <h2>Ho\u015f Geldiniz!<\/h2>\n          ) : (\n            <h2>L\u00fctfen Giri\u015f Yap\u0131n<\/h2>\n          )}\n          <button onClick={() => setGirisYapildi(!girisYapildi)}>\n            {girisYapildi ? '\u00c7\u0131k\u0131\u015f Yap' : 'Giri\u015f Yap'}\n          <\/button>\n        <\/div>\n      );\n    }\n\n    export default GirisKontrol;\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"expert-tip\">Uzman \u0130pucu: Ko\u015fullu renderlamada \u00e7ok say\u0131da i\u00e7 i\u00e7e ko\u015ful kullanmak yerine, mant\u0131\u011f\u0131 ayr\u0131 bir fonksiyona veya yard\u0131mc\u0131 bir bile\u015fene ta\u015f\u0131mak kodunuzun okunabilirli\u011fini art\u0131racakt\u0131r.<\/div>\n<h3>Listelerin Render Edilmesi ve useEffect ile Yan Etkilerin Y\u00f6netimi<\/h3>\n<p>Bir web uygulamas\u0131nda s\u0131kl\u0131kla kar\u015f\u0131la\u015f\u0131lan bir g\u00f6rev, bir veri listesini (\u00f6rne\u011fin, \u00fcr\u00fcn listesi, yorumlar) ekranda g\u00f6stermektir. React'te listeleri render etmek i\u00e7in JavaScript'in <code>map()<\/code> metodunu kullan\u0131r\u0131z. <code>map()<\/code> metodu, bir dizi \u00fczerindeki her \u00f6\u011fe i\u00e7in yeni bir dizi olu\u015fturur ve bu yeni dizi, React bile\u015fenlerini i\u00e7erir. Listeleri render ederken en \u00f6nemli noktalardan biri, her liste \u00f6\u011fesine benzersiz bir <code>key<\/code> (anahtar) prop'u vermektir. React, bu <code>key<\/code>'leri, hangi \u00f6\u011felerin de\u011fi\u015fti\u011fini, eklendi\u011fini veya silindi\u011fini verimli bir \u015fekilde izlemek i\u00e7in kullan\u0131r. <code>key<\/code> olarak genellikle veritaban\u0131 ID'leri gibi benzersiz tan\u0131mlay\u0131c\u0131lar tercih edilmelidir.<\/p>\n<pre><code>\n    import React from 'react';\n\n    function UrunListesi({ urunler }) {\n      return (\n        <ul>\n          {urunler.map(urun => (\n            <li key={urun.id}>\n              {urun.ad} - {urun.fiyat} TL\n            <\/li>\n          ))}\n        <\/ul>\n      );\n    }\n\n    export default UrunListesi;\n    <\/pre>\n<p><\/code><\/p>\n<p>React uygulamalar\u0131nda \u201cyan etkiler\u201d (side effects) genellikle veri \u00e7ekme (fetching data), abonelikler (subscriptions) veya manuel DOM manip\u00fclasyonlar\u0131 gibi i\u015flemleri ifade eder. Fonksiyonel bile\u015fenlerde bu t\u00fcr yan etkileri y\u00f6netmek i\u00e7in <code>useEffect<\/code> Hook'unu kullan\u0131r\u0131z. <code>useEffect<\/code>, bile\u015fen render edildikten sonra veya belirli ba\u011f\u0131ml\u0131l\u0131klar de\u011fi\u015fti\u011finde \u00e7al\u0131\u015ft\u0131r\u0131lacak bir fonksiyon tan\u0131mlaman\u0131za olanak tan\u0131r. \u0130kinci parametre olarak verilen ba\u011f\u0131ml\u0131l\u0131k dizisi, <code>useEffect<\/code>'in ne zaman yeniden \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirler. Bo\u015f bir dizi (<code>[]<\/code>) verilirse, efekt sadece bile\u015fenin ilk render'\u0131nda bir kez \u00e7al\u0131\u015f\u0131r (montaj a\u015famas\u0131). Bu, genellikle API'den veri \u00e7ekmek i\u00e7in kullan\u0131l\u0131r ve gereksiz yeniden \u00e7al\u0131\u015ft\u0131rmalar\u0131 \u00f6nler, b\u00f6ylece uygulaman\u0131z\u0131n performans\u0131n\u0131 art\u0131r\u0131r.<\/p>\n<pre><code>\n    import React, { useState, useEffect } from 'react';\n\n    function VeriCekme() {\n      const [veri, setVeri] = useState(null);\n\n      useEffect(() => {\n        \/\/ Bile\u015fen ilk kez render edildi\u011finde \u00e7al\u0131\u015f\u0131r\n        fetch('https:\/\/jsonplaceholder.typicode.com\/todos\/1')\n          .then(response => response.json())\n          .then(data => setVeri(data));\n      }, []); \/\/ Bo\u015f ba\u011f\u0131ml\u0131l\u0131k dizisi, sadece ilk render'da \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar\n\n      return (\n        <div>\n          <h2>API'den \u00c7ekilen Veri:<\/h2>\n          {veri ? (\n            <p>Ba\u015fl\u0131k: {veri.title}<\/p>\n          ) : (\n            <p>Veri y\u00fckleniyor...<\/p>\n          )}\n        <\/div>\n      );\n    }\n\n    export default VeriCekme;\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu teknikler, React ile dinamik, etkile\u015fimli ve veri odakl\u0131 uygulamalar geli\u015ftirmeniz i\u00e7in temel yap\u0131 ta\u015flar\u0131n\u0131 sa\u011flar. Her birini pratik yaparak ve farkl\u0131 senaryolarda kullanarak derinlemesine anlamak, React uzmanl\u0131\u011f\u0131n\u0131z\u0131 geli\u015ftirmede kritik rol oynayacakt\u0131r.<\/p>\n<h2>\u0130leri D\u00fczey React Konular\u0131 ve Performans \u0130pu\u00e7lar\u0131: Uygulamalar\u0131n\u0131z\u0131 Nas\u0131l Optimize Edersiniz?<\/h2>\n<p>React'in temel kavramlar\u0131na hakim olduktan sonra, uygulamalar\u0131n\u0131z\u0131 daha \u00f6l\u00e7eklenebilir, performansl\u0131 ve bak\u0131m\u0131 kolay hale getirecek ileri d\u00fczey konulara odaklanmak faydal\u0131 olacakt\u0131r. B\u00fcy\u00fck ve karma\u015f\u0131k uygulamalarda, bile\u015fen a\u011fac\u0131n\u0131n derinlikleri artt\u0131k\u00e7a veri aktar\u0131m\u0131 ve durum y\u00f6netimi zorla\u015fabilir. Bu noktada, global state y\u00f6netimi \u00e7\u00f6z\u00fcmleri devreye girer. React'in kendi i\u00e7inde sundu\u011fu Context API, props drilling (veriyi bir\u00e7ok alt bile\u015fenden ge\u00e7irmek zorunda kalma) sorununu \u00e7\u00f6zmek i\u00e7in harika bir yoldur. Context API, uygulama a\u011fac\u0131n\u0131n herhangi bir yerindeki bile\u015fenlerin, belirli bir de\u011feri (tema, kullan\u0131c\u0131 bilgisi, dil tercihi vb.) do\u011frudan okumas\u0131na ve kullanmas\u0131na olanak tan\u0131r. B\u00f6ylece, gereksiz props aktar\u0131mlar\u0131ndan ka\u00e7\u0131n\u0131l\u0131r ve kod daha temiz hale gelir. Daha b\u00fcy\u00fck ve daha karma\u015f\u0131k uygulamalar i\u00e7in ise Redux, MobX gibi \u00fc\u00e7\u00fcnc\u00fc taraf k\u00fct\u00fcphaneler daha merkezi ve tahmin edilebilir bir state y\u00f6netimi modeli sunar. Redux, t\u00fcm uygulaman\u0131n state'ini tek bir yerde (store) tutar ve state g\u00fcncellemelerinin belirli kurallar (action'lar ve reducer'lar) dahilinde yap\u0131lmas\u0131n\u0131 sa\u011flar, bu da hata ay\u0131klamay\u0131 ve uygulaman\u0131n davran\u0131\u015f\u0131n\u0131 anlamay\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3>React Router ile Navigasyon ve Custom Hooks Olu\u015fturma<\/h3>\n<p>Tek sayfa uygulamalar\u0131nda (SPA), kullan\u0131c\u0131lar\u0131n farkl\u0131 sayfalar aras\u0131nda gezinebilmesi i\u00e7in bir y\u00f6nlendirme (routing) k\u00fct\u00fcphanesine ihtiya\u00e7 duyulur. React Router, bu ihtiyac\u0131 kar\u015f\u0131layan en pop\u00fcler k\u00fct\u00fcphanedir. React Router ile, URL'ye g\u00f6re farkl\u0131 bile\u015fenleri render edebilir, sayfa ge\u00e7i\u015fleri yapabilir ve dinamik URL'ler olu\u015fturabilirsiniz. Bu, bir e-ticaret sitesindeki \u00fcr\u00fcn detay sayfas\u0131 gibi belirli bir ID'ye g\u00f6re de\u011fi\u015fen i\u00e7erikleri g\u00f6stermek i\u00e7in olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r. React Router'\u0131 \u00f6\u011frenmek, ger\u00e7ek d\u00fcnya uygulamalar\u0131 geli\u015ftirme becerinizi \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/p>\n<p>React Hook'lar\u0131, fonksiyonel bile\u015fenlere state ve ya\u015fam d\u00f6ng\u00fcs\u00fc \u00f6zelliklerini getirdi\u011fi gibi, \"Custom Hooks\" (\u00d6zel Hook'lar) olu\u015fturma imkan\u0131 da sunar. Custom Hook'lar, bile\u015fen mant\u0131\u011f\u0131n\u0131 tekrar kullan\u0131labilir fonksiyonlara ay\u0131rmam\u0131za olanak tan\u0131r. \u00d6rne\u011fin, bir API'den veri \u00e7ekme, bir formun durumunu y\u00f6netme veya bir kullan\u0131c\u0131n\u0131n online durumunu kontrol etme gibi belirli bir mant\u0131\u011f\u0131 bir\u00e7ok bile\u015fende kullanman\u0131z gerekiyorsa, bunu bir Custom Hook olarak paketleyebilirsiniz. Bir Custom Hook olu\u015fturmak, <code>use<\/code> ile ba\u015flayan bir fonksiyon yazmaktan ibarettir ve i\u00e7inde di\u011fer React Hook'lar\u0131n\u0131 \u00e7a\u011f\u0131rabilirsiniz. Bu, kod tekrar\u0131n\u0131 azalt\u0131r, bile\u015fenleri daha k\u00fc\u00e7\u00fck ve odaklanm\u0131\u015f tutar ve uygulaman\u0131z\u0131n genel mimarisini iyile\u015ftirir.<\/p>\n<pre><code>\n    import { useState, useEffect } from 'react';\n\n    function useFetch(url) {\n      const [data, setData] = useState(null);\n      const [loading, setLoading] = useState(true);\n      const [error, setError] = useState(null);\n\n      useEffect(() => {\n        const fetchData = async () => {\n          setLoading(true);\n          try {\n            const response = await fetch(url);\n            if (!response.ok) {\n              throw new Error(<code>HTTP error! status: ${response.status}<\/code>);\n            }\n            const result = await response.json();\n            setData(result);\n          } catch (error) {\n            setError(error);\n          } finally {\n            setLoading(false);\n          }\n        };\n\n        fetchData();\n      }, [url]); \/\/ url de\u011fi\u015fti\u011finde tekrar \u00e7al\u0131\u015f\u0131r\n\n      return { data, loading, error };\n    }\n\n    \/\/ Bu hook'u bir bile\u015fende \u015fu \u015fekilde kullanabilirsiniz:\n    \/\/ function MyComponent() {\n    \/\/   const { data, loading, error } = useFetch('https:\/\/api.example.com\/data');\n    \/\/   if (loading) return <p>Y\u00fckleniyor...<\/p>;\n    \/\/   if (error) return <p>Hata: {error.message}<\/p>;\n    \/\/   return <div>{JSON.stringify(data)}<\/div>;\n    \/\/ }\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"expert-tip\">Uzman \u0130pucu: Custom Hook'lar olu\u015ftururken, mant\u0131\u011f\u0131 ger\u00e7ekten tekrar kullan\u0131labilir ve tek bir sorumlulu\u011fa sahip olacak \u015fekilde ay\u0131rmaya \u00f6zen g\u00f6sterin. Bu, hook'lar\u0131n\u0131z\u0131n daha mod\u00fcler ve test edilebilir olmas\u0131n\u0131 sa\u011flar.<\/div>\n<h3>Performans Optimizasyonu: Uygulamalar\u0131n\u0131z\u0131 Nas\u0131l Daha H\u0131zl\u0131 Hale Getirirsiniz?<\/h3>\n<p>Performans, kullan\u0131c\u0131 deneyimi a\u00e7\u0131s\u0131ndan kritik bir fakt\u00f6rd\u00fcr. React uygulamalar\u0131n\u0131z\u0131n h\u0131zl\u0131 ve ak\u0131c\u0131 olmas\u0131n\u0131 sa\u011flamak i\u00e7in baz\u0131 optimizasyon tekniklerini bilmek \u00f6nemlidir. React.memo, useCallback ve useMemo Hook'lar\u0131, gereksiz yeniden renderlamalar\u0131 \u00f6nleyerek performans art\u0131\u015f\u0131 sa\u011flamak i\u00e7in kullan\u0131l\u0131r. <code>React.memo<\/code>, bir bile\u015fenin props'lar\u0131 de\u011fi\u015fmedi\u011fi s\u00fcrece yeniden render edilmesini engeller. Bu, \u00f6zellikle s\u0131k g\u00fcncellenen \u00fcst bile\u015fenlerin alt\u0131ndaki statik bile\u015fenler i\u00e7in faydal\u0131d\u0131r. <code>useCallback<\/code> ve <code>useMemo<\/code> ise, pahal\u0131 hesaplamalar\u0131 veya fonksiyon tan\u0131mlamalar\u0131n\u0131 \u00f6nbelle\u011fe alarak, ba\u011f\u0131ml\u0131l\u0131klar\u0131 de\u011fi\u015fmedi\u011fi s\u00fcrece ayn\u0131 de\u011feri veya fonksiyon referans\u0131n\u0131 d\u00f6nd\u00fcrmeyi sa\u011flar. Bu, \u00f6zellikle alt bile\u015fenlere prop olarak fonksiyonlar veya objeler ge\u00e7irildi\u011finde gereksiz yeniden renderlamalar\u0131 \u00f6nleyebilir.<\/p>\n<p>Di\u011fer \u00f6nemli optimizasyon teknikleri aras\u0131nda \u201cLazy Loading\u201d (Tembel Y\u00fckleme) ve \u201cCode Splitting\u201d (Kod B\u00f6lme) bulunur. B\u00fcy\u00fck React uygulamalar\u0131, ba\u015flang\u0131\u00e7ta kullan\u0131c\u0131ya gerekmeyen \u00e7ok miktarda JavaScript kodu i\u00e7erebilir. Lazy Loading ve Code Splitting, uygulaman\u0131z\u0131n farkl\u0131 k\u0131s\u0131mlar\u0131n\u0131 (bile\u015fenler, sayfalar) ayr\u0131 JavaScript paketlerine b\u00f6lerek, sadece ihtiya\u00e7 duyuldu\u011funda y\u00fcklenmelerini sa\u011flar. Bu, ba\u015flang\u0131\u00e7 y\u00fckleme s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r ve uygulaman\u0131n daha h\u0131zl\u0131 tepki vermesini sa\u011flar. React.lazy ve <code>Suspense<\/code> bile\u015fenleri, bu i\u015flevselli\u011fi kolayca uygulaman\u0131za olanak tan\u0131r. Son olarak, uygulaman\u0131z\u0131n test edilebilirli\u011fini sa\u011flamak da \u00f6nemlidir. Jest ve React Testing Library gibi ara\u00e7larla test yazmak, uygulaman\u0131z\u0131n beklenen \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olman\u0131z\u0131 ve gelecekteki de\u011fi\u015fikliklerin mevcut i\u015flevleri bozmas\u0131n\u0131 engellemenizi sa\u011flar. Bu ileri d\u00fczey teknikler, React geli\u015ftirici olarak yetkinli\u011finizi bir \u00fcst seviyeye ta\u015f\u0131yacakt\u0131r.<\/p>\n<h2>Mobil Uyumlu Tasar\u0131m ve Responsive React Uygulamalar\u0131 Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>G\u00fcn\u00fcm\u00fczde kullan\u0131c\u0131lar\u0131n b\u00fcy\u00fck bir k\u0131sm\u0131 web sitelerine ve uygulamalara mobil cihazlar \u00fczerinden eri\u015fti\u011fi i\u00e7in, React uygulamalar\u0131n\u0131z\u0131n mobil uyumlu ve duyarl\u0131 (responsive) olmas\u0131 ka\u00e7\u0131n\u0131lmaz bir gerekliliktir. Duyarl\u0131 tasar\u0131m, uygulaman\u0131z\u0131n farkl\u0131 ekran boyutlar\u0131na ve cihazlara (masa\u00fcst\u00fc bilgisayarlar, tabletler, ak\u0131ll\u0131 telefonlar) otomatik olarak uyum sa\u011flamas\u0131 anlam\u0131na gelir. React ile duyarl\u0131 uygulamalar geli\u015ftirmek i\u00e7in birden fazla yakla\u015f\u0131m ve ara\u00e7 bulunmaktad\u0131r. \u00d6ncelikle, CSS taraf\u0131ndaki yakla\u015f\u0131mlar\u0131 inceleyelim.<\/p>\n<h3>CSS-in-JS ve Tailwind CSS ile Stil Y\u00f6netimi<\/h3>\n<p>React ekosisteminde stil y\u00f6netimi i\u00e7in bir\u00e7ok pop\u00fcler y\u00f6ntem mevcuttur. \u201cCSS-in-JS\u201d k\u00fct\u00fcphaneleri, CSS'i do\u011frudan JavaScript kodu i\u00e7inde yazman\u0131za olanak tan\u0131r. Styled Components ve Emotion bu alandaki \u00f6nde gelen k\u00fct\u00fcphanelerdir. Bu yakla\u015f\u0131mla, her bile\u015fenin stilini kendi i\u00e7erisinde tan\u0131mlayabilirsiniz, bu da stil \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nler ve bile\u015fenlerin daha kaps\u00fcllenmi\u015f olmas\u0131n\u0131 sa\u011flar. \u00d6rne\u011fin, Styled Components kullanarak bir butonun stilini \u015fu \u015fekilde tan\u0131mlayabilirsiniz:<\/p>\n<pre><code>\n    import styled from 'styled-components';\n\n    const StyledButton = styled.button<code>background-color: #007bff;\n      color: white;\n      padding: 10px 20px;\n      border: none;\n      border-radius: 5px;\n      cursor: pointer;\n\n      &:hover {\n        background-color: #0056b3;\n      }\n\n      @media (max-width: 768px) {\n        padding: 8px 15px;\n        font-size: 14px;\n      }<\/code>;\n\n    function MyButton() {\n      return <StyledButton>T\u0131kla Bana<\/StyledButton>;\n    }\n\n    export default MyButton;\n    <\/pre>\n<p><\/code><\/p>\n<p>Di\u011fer bir pop\u00fcler yakla\u015f\u0131m ise Tailwind CSS gibi utility-first (yard\u0131mc\u0131 \u00f6ncelikli) CSS framework'leridir. Tailwind CSS, \u00f6nceden tan\u0131mlanm\u0131\u015f \u00e7ok say\u0131da k\u00fc\u00e7\u00fck ve tek kullan\u0131ml\u0131k CSS s\u0131n\u0131f\u0131 sunar. Bu s\u0131n\u0131flar\u0131 do\u011frudan JSX elementlerinize uygulayarak h\u0131zl\u0131 ve duyarl\u0131 tasar\u0131mlar olu\u015fturabilirsiniz. Tailwind ile stil yazmak, inline stil yazmaya benzer ancak daha tutarl\u0131 ve optimize edilmi\u015f bir yap\u0131 sunar. \u00d6rne\u011fin, bir butonun g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc Tailwind ile \u015fu \u015fekilde tan\u0131mlayabilirsiniz:<\/p>\n<pre><code>\n    \/\/ Tailwind CSS kurulu bir React projesinde\n    function MyTailwindButton() {\n      return (\n        <button className=\"bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded md:py-3 md:px-6\">\n          T\u0131kla Bana (Tailwind)\n        <\/button>\n      );\n    }\n\n    export default MyTailwindButton;\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte <code>md:py-3<\/code> ve <code>md:px-6<\/code> gibi s\u0131n\u0131flar, \"medium\" ekran boyutundan itibaren uygulanacak stilleri belirtir, bu da Tailwind'in duyarl\u0131l\u0131k yakla\u015f\u0131m\u0131n\u0131n bir par\u00e7as\u0131d\u0131r.<\/p>\n<h3>Media Queries ve Flexbox\/Grid ile Duyarl\u0131 Layoutlar<\/h3>\n<p>Duyarl\u0131 tasar\u0131m\u0131n temel ta\u015f\u0131 olan \u201cMedia Queries\u201d (Medya Sorgular\u0131), belirli ekran geni\u015flikleri veya cihaz \u00f6zellikleri i\u00e7in farkl\u0131 stiller uygulaman\u0131za olanak tan\u0131r. React uygulamalar\u0131n\u0131zda, medya sorgular\u0131n\u0131 ya do\u011frudan CSS dosyalar\u0131n\u0131zda (geleneksel y\u00f6ntem), ya da Styled Components gibi CSS-in-JS k\u00fct\u00fcphaneleri i\u00e7inde kullanabilirsiniz. \u00d6rne\u011fin, Styled Components \u00f6rne\u011finde <code>@media (max-width: 768px)<\/code> ifadesi, ekran geni\u015fli\u011fi 768 pikselden az oldu\u011funda butonun padding ve yaz\u0131 tipi boyutunu de\u011fi\u015ftirecektir.<\/p>\n<p>Layout olu\u015fturmak i\u00e7in modern CSS teknikleri olan Flexbox ve CSS Grid, duyarl\u0131 tasar\u0131mlar i\u00e7in olmazsa olmazd\u0131r. Flexbox, tek boyutlu (sat\u0131r veya s\u00fctun) d\u00fczenler i\u00e7in m\u00fckemmeldir ve \u00f6\u011feleri hizalama, da\u011f\u0131tma ve bo\u015fluk b\u0131rakma konusunda \u00fcst\u00fcn esneklik sa\u011flar. CSS Grid ise iki boyutlu (sat\u0131r ve s\u00fctun) d\u00fczenler i\u00e7in idealdir, karma\u015f\u0131k sayfa d\u00fczenlerini kolayca olu\u015fturman\u0131za olanak tan\u0131r. Bu iki tekni\u011fi birle\u015ftirerek, farkl\u0131 ekran boyutlar\u0131na sorunsuz bir \u015fekilde uyum sa\u011flayabilen karma\u015f\u0131k ve dinamik layoutlar geli\u015ftirebilirsiniz.<\/p>\n<pre><code>\n    \/\/ \u00d6rnek bir CSS dosyas\u0131 (\u00f6rne\u011fin src\/App.css) i\u00e7inde medya sorgusu kullan\u0131m\u0131:\n    \/\/ .container {\n    \/\/   display: flex;\n    \/\/   flex-direction: row;\n    \/\/   flex-wrap: wrap; \/* K\u00fc\u00e7\u00fck ekranlarda alt alta ge\u00e7i\u015fi sa\u011flar *\/\n    \/\/ }\n\n    \/\/ .item {\n    \/\/   flex: 1 1 300px; \/* Esnekli\u011fi ve minimum geni\u015fli\u011fi ayarlar *\/\n    \/\/   margin: 10px;\n    \/\/   background-color: lightgray;\n    \/\/   padding: 20px;\n    \/\/ }\n\n    \/\/ @media (max-width: 768px) {\n    \/\/   .container {\n    \/\/     flex-direction: column; \/* Tablet ve mobil cihazlarda s\u00fctun d\u00fczeni *\/\n    \/\/   }\n    \/\/   .item {\n    \/\/     flex: 1 1 100%; \/* Tam geni\u015fli\u011fi kapla *\/\n    \/\/   }\n    \/\/ }\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>.container<\/code> ve <code>.item<\/code> s\u0131n\u0131flar\u0131 varsay\u0131lan olarak esnek bir sat\u0131r d\u00fczeni olu\u015ftururken, ekran geni\u015fli\u011fi 768 pikselin alt\u0131na d\u00fc\u015ft\u00fc\u011f\u00fcnde <code>.container<\/code> s\u00fctun d\u00fczenine ge\u00e7i\u015f yapar ve <code>.item<\/code>'lar tam geni\u015fli\u011fi kaplar. Bu, React bile\u015fenlerinize bu s\u0131n\u0131flar\u0131 uygulayarak uygulaman\u0131z\u0131n duyarl\u0131l\u0131\u011f\u0131n\u0131 sa\u011flaman\u0131n temel bir yoludur.<\/p>\n<div class=\"expert-tip\">Uzman \u0130pucu: Responsive tasar\u0131mlar\u0131n\u0131z\u0131 geli\u015ftirirken, taray\u0131c\u0131n\u0131z\u0131n geli\u015ftirici ara\u00e7lar\u0131ndaki \"Responsive Design Mode\" (Duyarl\u0131 Tasar\u0131m Modu) \u00f6zelli\u011fini kullanarak uygulaman\u0131z\u0131 farkl\u0131 cihaz boyutlar\u0131nda test etmeyi unutmay\u0131n. Bu, hatalar\u0131 erken yakalaman\u0131za yard\u0131mc\u0131 olur.<\/div>\n<p>Sonu\u00e7 olarak, React uygulamalar\u0131n\u0131zda mobil uyumlu ve duyarl\u0131 tasar\u0131m prensiplerini uygulamak, kullan\u0131c\u0131 taban\u0131n\u0131z\u0131 geni\u015fletmek ve daha iyi bir kullan\u0131c\u0131 deneyimi sunmak i\u00e7in hayati \u00f6neme sahiptir. CSS-in-JS, Tailwind CSS, Media Queries, Flexbox ve CSS Grid gibi ara\u00e7 ve teknikleri ustal\u0131kla kullanarak, her cihazda harika g\u00f6r\u00fcnen ve \u00e7al\u0131\u015fan uygulamalar geli\u015ftirebilirsiniz.<\/p>\n<h2>Sonu\u00e7: ReactJS ve 100 G\u00fcn Kod Yazma Maceran\u0131zdan Ne Kazanacaks\u0131n\u0131z?<\/h2>\n<p>ReactJS \u00f6\u011frenme ve 100 g\u00fcnl\u00fck kod yazma maceran\u0131z\u0131n sonunda, sadece yeni bir programlama dili veya k\u00fct\u00fcphanesi \u00f6\u011frenmekle kalmayacak, ayn\u0131 zamanda kendinize ve kariyerinize \u00e7ok de\u011ferli yetenekler katm\u0131\u015f olacaks\u0131n\u0131z. Bu yolculuk, ba\u015flang\u0131\u00e7ta g\u00f6z korkutucu g\u00f6r\u00fcnse de, ad\u0131m ad\u0131m ilerledik\u00e7e sizi \u00e7ok daha yetkin ve kendine g\u00fcvenen bir geli\u015ftirici haline getirecektir. \u00d6ncelikle, modern web geli\u015ftirmenin temel ta\u015flar\u0131ndan biri olan ReactJS'e derinlemesine hakim olacaks\u0131n\u0131z. Bile\u015fen tabanl\u0131 mimariyi anlama, state ve props y\u00f6netimi, Hook'lar\u0131 etkin kullanma, yan etkileri idare etme ve performans optimizasyonu gibi konularda g\u00fc\u00e7l\u00fc bir bilgi birikimine sahip olacaks\u0131n\u0131z. Bu bilgiler, sadece React projelerinde de\u011fil, genel JavaScript ve frontend geli\u015ftirme prensiplerini anlaman\u0131za da b\u00fcy\u00fck katk\u0131 sa\u011flayacakt\u0131r.<\/p>\n<p>Daha da \u00f6nemlisi, \"100 G\u00fcn Kod Yazma\" challenge'\u0131 sayesinde edinilen s\u00fcrekli pratik ve disiplin al\u0131\u015fkanl\u0131\u011f\u0131, kariyeriniz boyunca size e\u015flik edecek en de\u011ferli varl\u0131k olacakt\u0131r. Her g\u00fcn d\u00fczenli olarak kod yazmak, problem \u00e7\u00f6zme kaslar\u0131n\u0131z\u0131 g\u00fc\u00e7lendirecek, kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z hatalar\u0131 ay\u0131klama (debugging) yetene\u011finizi geli\u015ftirecek ve sizi daha sab\u0131rl\u0131 bir \u00f6\u011frenci haline getirecektir. K\u00fc\u00e7\u00fck projeleri tamamlamak, ad\u0131m ad\u0131m ilerlemek ve s\u00fcre\u00e7 boyunca kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z zorluklar\u0131 a\u015fmak, somut ba\u015far\u0131lar elde etmenizi ve kendinize olan inanc\u0131n\u0131z\u0131 art\u0131rman\u0131z\u0131 sa\u011flayacakt\u0131r. Bu s\u00fcre\u00e7te geli\u015ftirece\u011finiz portfolyo projeleri, potansiyel i\u015fverenlere g\u00f6sterebilece\u011finiz somut kan\u0131tlar sunacak ve i\u015f bulma s\u00fcrecinizi h\u0131zland\u0131racakt\u0131r. Ayr\u0131ca, online geli\u015ftirici topluluklar\u0131na kat\u0131larak deneyimlerinizi payla\u015fmak ve di\u011fer geli\u015ftiricilerle etkile\u015fimde bulunmak, a\u011f\u0131n\u0131z\u0131 geni\u015fletmenize ve sekt\u00f6rdeki en son geli\u015fmeleri takip etmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<p>Bu maceran\u0131n sonunda, sadece teknik birikiminiz artmakla kalmayacak, ayn\u0131 zamanda \u00f6\u011frenmeye ve geli\u015fmeye a\u00e7\u0131k, disiplinli bir zihniyet geli\u015ftireceksiniz. Web geli\u015ftirme d\u00fcnyas\u0131 s\u00fcrekli de\u011fi\u015fti\u011fi i\u00e7in, bu \u00f6\u011frenme ve uyum sa\u011flama yetene\u011fi, kariyerinizdeki ba\u015far\u0131n\u0131n anahtar\u0131 olacakt\u0131r. ReactJS ile ba\u015flad\u0131\u011f\u0131n\u0131z bu yolculuk, belki de Redux, Next.js, TypeScript veya farkl\u0131 frontend teknolojilerine uzanan bir k\u00f6pr\u00fc g\u00f6revi g\u00f6recektir. Unutmay\u0131n, kodlama yolculu\u011fu bir var\u0131\u015f noktas\u0131na ula\u015fmak de\u011fil, s\u00fcrekli bir ke\u015fif ve geli\u015fim s\u00fcrecidir. Bu 100 g\u00fcn, bu s\u00fcrecin sadece ba\u015flang\u0131c\u0131d\u0131r; ancak en sa\u011flam ve etkili ba\u015flang\u0131\u00e7lar\u0131ndan biridir. \u015eimdi klavyenizin ba\u015f\u0131na ge\u00e7in, kod yazmaya ba\u015flay\u0131n ve bu heyecan verici maceran\u0131n her an\u0131n\u0131n tad\u0131n\u0131 \u00e7\u0131kar\u0131n!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<dl>\n<dt>ReactJS \u00f6\u011frenmek ne kadar s\u00fcrer?<\/dt>\n<dd>ReactJS'in temellerini \u00f6\u011frenmek genellikle birka\u00e7 hafta s\u00fcrerken, ileri d\u00fczey konulara hakim olmak ve ger\u00e7ek d\u00fcnya projeleri geli\u015ftirecek seviyeye gelmek birka\u00e7 aydan bir y\u0131la kadar de\u011fi\u015febilir. D\u00fczenli pratikle bu s\u00fcre k\u0131salabilir.<\/dd>\n<dt>100 G\u00fcn Kod Yazma challenge'\u0131na nas\u0131l ba\u015flayabilirim?<\/dt>\n<dd>K\u00fc\u00e7\u00fck ve basit projelerle ba\u015flay\u0131n (\u00f6rne\u011fin To-Do listesi, saya\u00e7). Her g\u00fcn belirli bir zaman ay\u0131r\u0131n (en az 30-60 dakika). \u0130lerlemenizi bir yerde not al\u0131n (GitHub, blog, defter). Hatalardan korkmay\u0131n, onlar\u0131 \u00f6\u011frenme f\u0131rsat\u0131 olarak g\u00f6r\u00fcn.<\/dd>\n<dt>ReactJS \u00f6\u011frenmek i\u00e7in JavaScript bilgisi \u015fart m\u0131?<\/dt>\n<dd>Evet, kesinlikle \u015fartt\u0131r. ReactJS bir JavaScript k\u00fct\u00fcphanesidir ve g\u00fc\u00e7l\u00fc bir JavaScript temeli olmadan React'i etkili bir \u015fekilde \u00f6\u011frenmek ve kullanmak \u00e7ok zordur. \u00d6zellikle ES6+ (arrow functions, destructuring, modules) bilgisi \u00e7ok \u00f6nemlidir.<\/dd>\n<dt>React Native ile mobil uygulama geli\u015ftirebilir miyim?<\/dt>\n<dd>Evet, React Native, ReactJS prensiplerini kullanarak iOS ve Android i\u00e7in native mobil uygulamalar geli\u015ftirmenizi sa\u011flayan bir framework't\u00fcr. ReactJS bilgisi olan birinin React Native'e ge\u00e7i\u015f yapmas\u0131 nispeten daha kolayd\u0131r.<\/dd>\n<dt>ReactJS mi yoksa ba\u015fka bir framework (Angular\/Vue) mi \u00f6\u011frenmeliyim?<\/dt>\n<dd>ReactJS, pazar pay\u0131 ve i\u015f ilanlar\u0131 a\u00e7\u0131s\u0131ndan \u015fu anda en pop\u00fcler se\u00e7eneklerden biridir. Ancak se\u00e7im, ki\u015fisel ilgi alanlar\u0131n\u0131za, projenizin gereksinimlerine ve \u00f6\u011frenme stilinize ba\u011fl\u0131d\u0131r. Her \u00fc\u00e7 framework de (React, Angular, Vue) g\u00fc\u00e7l\u00fc ve yeteneklidir. React'in esnekli\u011fi ve bile\u015fen tabanl\u0131 yap\u0131s\u0131 bir\u00e7ok geli\u015ftirici i\u00e7in \u00e7ekicidir.<\/dd>\n<\/dl>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"ReactJS&#8217;i s\u0131f\u0131rdan \u00f6\u011frenmek ve g\u00fcnl\u00fck kod yazma al\u0131\u015fkanl\u0131\u011f\u0131 kazanmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehberde, ReactJS temellerinden ileri seviye&hellip;","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-34868","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>ReactJS \u00d6\u011frenimi ve 100 G\u00fcn Kod Yazma Maceras\u0131<\/title>\n<meta name=\"description\" content=\"ReactJS&#039;i s\u0131f\u0131rdan \u00f6\u011frenmek ve g\u00fcnl\u00fck kod yazma al\u0131\u015fkanl\u0131\u011f\u0131 kazanmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehberde, ReactJS temellerinden ileri seviye konulara, pratik projelerle 100 g\u00fcnl\u00fck kodlama ser\u00fcveninizi nas\u0131l y\u00f6netece\u011finize dair t\u00fcm ipu\u00e7lar\u0131n\u0131 bulacaks\u0131n\u0131z. Bu yolculuk, sadece kod yazma becerilerinizi geli\u015ftirmekle kalmayacak, ayn\u0131 zamanda problem \u00e7\u00f6zme yetene\u011finizi de zirveye ta\u015f\u0131yacak.\" \/>\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\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ReactJS \u00d6\u011frenimi ve 100 G\u00fcn Kod Yazma Maceras\u0131\" \/>\n<meta property=\"og:description\" content=\"ReactJS&#039;i s\u0131f\u0131rdan \u00f6\u011frenmek ve g\u00fcnl\u00fck kod yazma al\u0131\u015fkanl\u0131\u011f\u0131 kazanmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehberde, ReactJS temellerinden ileri seviye konulara, pratik projelerle 100 g\u00fcnl\u00fck kodlama ser\u00fcveninizi nas\u0131l y\u00f6netece\u011finize dair t\u00fcm ipu\u00e7lar\u0131n\u0131 bulacaks\u0131n\u0131z. Bu yolculuk, sadece kod yazma becerilerinizi geli\u015ftirmekle kalmayacak, ayn\u0131 zamanda problem \u00e7\u00f6zme yetene\u011finizi de zirveye ta\u015f\u0131yacak.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-22T23:31:03+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=\"29 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"ReactJS \u00d6\u011frenimi ve 100 G\u00fcn Kod Yazma Maceras\u0131\",\"datePublished\":\"2025-11-22T23:31:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/\"},\"wordCount\":5375,\"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\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/\",\"name\":\"ReactJS \u00d6\u011frenimi ve 100 G\u00fcn Kod Yazma Maceras\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-22T23:31:03+00:00\",\"description\":\"ReactJS'i s\u0131f\u0131rdan \u00f6\u011frenmek ve g\u00fcnl\u00fck kod yazma al\u0131\u015fkanl\u0131\u011f\u0131 kazanmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehberde, ReactJS temellerinden ileri seviye konulara, pratik projelerle 100 g\u00fcnl\u00fck kodlama ser\u00fcveninizi nas\u0131l y\u00f6netece\u011finize dair t\u00fcm ipu\u00e7lar\u0131n\u0131 bulacaks\u0131n\u0131z. Bu yolculuk, sadece kod yazma becerilerinizi geli\u015ftirmekle kalmayacak, ayn\u0131 zamanda problem \u00e7\u00f6zme yetene\u011finizi de zirveye ta\u015f\u0131yacak.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ReactJS \u00d6\u011frenimi ve 100 G\u00fcn Kod Yazma Maceras\u0131\"}]},{\"@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":"ReactJS \u00d6\u011frenimi ve 100 G\u00fcn Kod Yazma Maceras\u0131","description":"ReactJS'i s\u0131f\u0131rdan \u00f6\u011frenmek ve g\u00fcnl\u00fck kod yazma al\u0131\u015fkanl\u0131\u011f\u0131 kazanmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehberde, ReactJS temellerinden ileri seviye konulara, pratik projelerle 100 g\u00fcnl\u00fck kodlama ser\u00fcveninizi nas\u0131l y\u00f6netece\u011finize dair t\u00fcm ipu\u00e7lar\u0131n\u0131 bulacaks\u0131n\u0131z. Bu yolculuk, sadece kod yazma becerilerinizi geli\u015ftirmekle kalmayacak, ayn\u0131 zamanda problem \u00e7\u00f6zme yetene\u011finizi de zirveye ta\u015f\u0131yacak.","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\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/","og_locale":"tr_TR","og_type":"article","og_title":"ReactJS \u00d6\u011frenimi ve 100 G\u00fcn Kod Yazma Maceras\u0131","og_description":"ReactJS'i s\u0131f\u0131rdan \u00f6\u011frenmek ve g\u00fcnl\u00fck kod yazma al\u0131\u015fkanl\u0131\u011f\u0131 kazanmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehberde, ReactJS temellerinden ileri seviye konulara, pratik projelerle 100 g\u00fcnl\u00fck kodlama ser\u00fcveninizi nas\u0131l y\u00f6netece\u011finize dair t\u00fcm ipu\u00e7lar\u0131n\u0131 bulacaks\u0131n\u0131z. Bu yolculuk, sadece kod yazma becerilerinizi geli\u015ftirmekle kalmayacak, ayn\u0131 zamanda problem \u00e7\u00f6zme yetene\u011finizi de zirveye ta\u015f\u0131yacak.","og_url":"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-22T23:31:03+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"29 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"ReactJS \u00d6\u011frenimi ve 100 G\u00fcn Kod Yazma Maceras\u0131","datePublished":"2025-11-22T23:31:03+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/"},"wordCount":5375,"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\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/","url":"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/","name":"ReactJS \u00d6\u011frenimi ve 100 G\u00fcn Kod Yazma Maceras\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-22T23:31:03+00:00","description":"ReactJS'i s\u0131f\u0131rdan \u00f6\u011frenmek ve g\u00fcnl\u00fck kod yazma al\u0131\u015fkanl\u0131\u011f\u0131 kazanmak m\u0131 istiyorsunuz? Bu kapsaml\u0131 rehberde, ReactJS temellerinden ileri seviye konulara, pratik projelerle 100 g\u00fcnl\u00fck kodlama ser\u00fcveninizi nas\u0131l y\u00f6netece\u011finize dair t\u00fcm ipu\u00e7lar\u0131n\u0131 bulacaks\u0131n\u0131z. Bu yolculuk, sadece kod yazma becerilerinizi geli\u015ftirmekle kalmayacak, ayn\u0131 zamanda problem \u00e7\u00f6zme yetene\u011finizi de zirveye ta\u015f\u0131yacak.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/reactjs-ogrenimi-ve-100-gun-kod-yazma-macerasi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ReactJS \u00d6\u011frenimi ve 100 G\u00fcn Kod Yazma Maceras\u0131"}]},{"@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\/34868","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=34868"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34868\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34868"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34868"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34868"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}