React JSX
JSX Nedir?
Section titled “JSX Nedir?”JSX, JavaScript kodunun içine HTML benzeri kod yazmamızı sağlayan bir sözdizimidir. JSX, React’te UI oluşturmak için kullanılır ve HTML’e çok benzemesine rağmen bazı önemli farklılıkları vardır.
JSX’in Avantajları:
Section titled “JSX’in Avantajları:”- Daha okunabilir kod: JSX, HTML’e benzediği için kodun daha okunabilir ve anlaşılır olmasını sağlar.
- Daha kolay kod yazma: JSX, HTML ve JavaScript’i tek bir kodda birleştirerek kod yazmayı kolaylaştırır.
- Daha az hata: JSX, hataları compile sırasında yakalayarak hataları azaltmaya yardımcı olur.
React’te JSX Kullanımı
Section titled “React’te JSX Kullanımı”JSX’te HTML elementleri kullanın:
const element = ( <div> <h1>Merhaba, Dünya!</h1> <p>Bu bir paragraf.</p> </div>);JSX’te JavaScript ifadeleri kullanın:
const name = "John Doe";
const element = <h1>Merhaba, {name}!</h1>;JSX’te süslü parantezler arasına dilediğiniz herhangi bir JavaScript ifadesini yazabilirsiniz. Örneğin, 2 + 2, user.firstName, veya formatName(user) gibi JavaScript ifadelerini kullanabilirsiniz.
Aşağıdaki örnekte, bir JavaScript fonksiyonun çağrısının sonucu JSX içerisine gömülmektedir. Yani formatName(user), <h1> elemanının içerisine konulmaktadır.
function formatName(user) { return user.firstName + " " + user.lastName;}
const user = { firstName: "Harper", lastName: "Perez",};
const element = <h1>Hello, {formatName(user)}!</h1>;JSX Kuralları
Section titled “JSX Kuralları”Tek bir ana (kök) öğeyi döndür
Section titled “Tek bir ana (kök) öğeyi döndür”Bir bileşenden birden fazla öğe döndürmek için bunları tek bir üst etiketle sarın. Örneğin, bir <div> kullanabilirsiniz:
<div> <h1>Hedy Lamarr's Todos</h1> <img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" class="photo" /> <ul> ... </ul></div>Kodunuza fazladan bir <div> eklemek istemiyorsanız bunun yerine <> ve </> yazabilirsiniz:
<> <h1>Hedy Lamarr's Todos</h1> <img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" class="photo" > <ul> ... </ul></>Tüm etiketleri kapat
Section titled “Tüm etiketleri kapat”JSX, etiketlerin açıkça kapatılmasını gerektirir: <img> gibi kendi kendine kapanan etiketler <img /> haline gelmeli ve <li>portakallar gibi sarma etiketleri <li>portakallar</li> olarak yazılmalıdır.
<> <img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" class="photo" /> <ul> <li>Invent new traffic lights</li> <li>Rehearse a movie scene</li> <li>Improve the spectrum technology</li> </ul></>camelCase kullan
Section titled “camelCase kullan”Etiket isimleri camelCase formatında yazılmalıdır.
JSX, JavaScript’e dönüşür ve JSX’te yazılan nitelikler, JavaScript nesnelerinin anahtarları haline gelir. Kendi bileşenlerinizde genellikle bu nitelikleri değişkenlere okumak isteyeceksiniz.
Ancak JavaScript’in değişken adları konusunda sınırlamaları vardır. Örneğin adları tire içeremez veya class gibi ayrılmış kelimeler olamaz.
Bu nedenle React’ta birçok HTML ve SVG özelliği camelCase’e yazılmıştır.
Örneğin, stroke-width yerine strokeWidth kullanırsınız.
Class ayrılmış bir kelime olduğundan, React’te bunun yerine ilgili DOM özelliğinin adını taşıyan className yazarsınız:
<img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" className="photo"/>JS ifadeleri süslü parantez içinde yazılmalıdır.
Section titled “JS ifadeleri süslü parantez içinde yazılmalıdır.”JSX’te, HTML elementleri ile birlikte JavaScript ifadelerini de kullanabilirsiniz. Bu, dinamik içerik oluşturmak ve UI’yi daha etkileşimli hale getirmek için çok kullanışlıdır.
JavaScript ifadeleri süslü parantez içinde yazılmalıdır.
Örnekler:
const name = "John Doe";
const element = <h1>Merhaba, {name}!</h1>;Bu kodda, name değişkeninin değeri <h1> etiketinin içine yerleştirilir.
Mevcut zamanı gösteren bir saat:
const time = new Date().toLocaleTimeString();
const element = ( <div> <h1>Saat: {time}</h1> </div>);Bir sayıyı iki ile çarpan bir fonksiyon:
function double(number) { return number * 2;}
const element = ( <div> <h1>Sayı: {double(5)}</h1> </div>);Daha fazla bilgi https://react.dev/learn/javascript-in-jsx-with-curly-braces
Sonraki Sayfalar:
Section titled “Sonraki Sayfalar:”Component olusturmaya gecmeden iyice ogrenelim:
- Props https://react.dev/learn/passing-props-to-a-component ve https://www.robinwieruch.de/react-pass-props-to-component/
- Conditional Rendering https://react.dev/learn/conditional-rendering ve https://www.robinwieruch.de/conditional-rendering-react/
- Component Composition https://www.robinwieruch.de/react-component-composition/
- …