Fragment'ler
These docs are old and won’t be updated. Go to react.dev for the new React docs.
These new documentation pages teach modern React:
React’teki ortak model, bir bileşenin birden fazla öğe döndürmesidir. Fragmentler, Dom’a ekstra düğüm eklemeden bir alt elemanlar listesini gruplandırmanıza izin verir.
render() {
return (
<React.Fragment>
<ChildA />
<ChildB />
<ChildC />
</React.Fragment>
);
}
Onları tanımlamak için yeni bir kısa sözdizimi de vardır.
Motivasyon
Bir bileşenin alt eleman listesini döndürmesi için yaygın bir modeldir. Örnek için bu React kod parçasına bakın.
class Table extends React.Component {
render() {
return (
<table>
<tr>
<Columns />
</tr>
</table>
);
}
}
Oluşturulan HTML’in geçerli olması için <Columns />
birden fazla <td>
öğesini döndürmesi gerekir. Bir üst div <Columns />
bileşeninin render()
metodu içinde kullanılmışsa, sonuçta ortaya çıkan HTML geçersiz olacaktır.
class Columns extends React.Component {
render() {
return (
<div>
<td>Merhaba</td>
<td>Dünya</td>
</div>
);
}
}
<Table />
çıktısının sonucu:
<table>
<tr>
<div>
<td>Hello</td>
<td>World</td>
</div>
</tr>
</table>
Fragmentler bu sorunu çözer.
Kullanım
class Columns extends React.Component {
render() {
return (
<React.Fragment> <td>Merhaba</td>
<td>Dünya</td>
</React.Fragment> );
}
}
<Table />
çıktısının doğru sonucu:
<table>
<tr>
<td>Merhaba</td>
<td>Dünya</td>
</tr>
</table>
Kısa Sözdizimi
Fragmentleri tanımlamak için kullanabileceğiniz yeni, daha kısa bir sözdizimi var. Boş etiketlere benziyor:
class Columns extends React.Component {
render() {
return (
<> <td>Merhaba</td>
<td>Dünya</td>
</> );
}
}
Anahtarları veya nitelikleri desteklememesi dışında, diğer elementleri kullandığınız gibi <></>
kullanabilirsiniz.
Not, birçok araç henüz desteklemiyor. Bu nedenle, destekleninceye kadar <React.Fragment>
yazmak isteyebilirsiniz.
Anahtarlı Fragment’ler
Açıkça belirtilen <React.Fragment>
sözdiziminin anahtarları olabilir. Bunun için bir kullanım durumu, bir koleksiyonun bir fragmentler dizisine eşlenmesidir. — örneğin, bir açıklama listesi oluşturmak için:
function Glossary(props) {
return (
<dl>
{props.items.map(item => (
// `key` olmadan, React önemli bir uyarıyı tetikler
<React.Fragment key={item.id}>
<dt>{item.term}</dt>
<dd>{item.description}</dd>
</React.Fragment>
))}
</dl>
);
}
key
, Fragment
‘e iletilebilecek tek özelliktir. Gelecekte, olay yöneticileri gibi ek özellikler için destek ekleyebiliriz.
Canlı Demo
Bununla yeni JSX fragment sözdizimini deneyebilirsiniz: CodePen.