You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/learn/writing-markup-with-jsx.md
+69-69Lines changed: 69 additions & 69 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,24 +1,24 @@
1
1
---
2
-
title: Writing Markup with JSX
2
+
title: JSX ile İşaretleme (Markup) Yazma
3
3
---
4
4
5
5
<Intro>
6
6
7
-
*JSX* is a syntax extension for JavaScript that lets you write HTML-like markup inside a JavaScript file. Although there are other ways to write components, most React developers prefer the conciseness of JSX, and most codebases use it.
7
+
*JSX*, bir JavaScript dosyası içinde HTML benzeri biçimlendirme (markup) yazmanıza olanak tanıyan bir JavaScript söz dizimi uzantısıdır. Bileşen yazmanın başka yolları olsa da çoğu React geliştiricisi, JSX'in sağladığı kolaylığı tercih eder ve çoğu kod tabanı (codebase) bunu kullanır.
8
8
9
9
</Intro>
10
10
11
11
<YouWillLearn>
12
12
13
-
*Why React mixes markup with rendering logic
14
-
*How JSX is different from HTML
15
-
*How to display information with JSX
13
+
* React neden biçimlendirmeyi, render ile birleştirir?
14
+
* JSX'in HTML'den farkı nedir?
15
+
*JSX ile veri nasıl gösterilir?
16
16
17
17
</YouWillLearn>
18
18
19
-
## JSX: Putting markup into JavaScript {/*jsx-putting-markup-into-javascript*/}
The Web has been built on HTML, CSS, and JavaScript. For many years, web developers kept content in HTML, design in CSS, and logic in JavaScript—often in separate files! Content was marked up inside HTML while the page's logic lived separately in JavaScript:
21
+
Web; HTML, CSS ve JavaScript üzerine inşa edilmiştir. Uzun yıllar boyunca web geliştiricileri, içeriği HTML'de, tasarımı CSS'te ve mantığı JavaScript'te -genellikle ayrı dosyalarda- tuttular! İçerik, HTML içinde tanımlanırken sayfanın mantığı, JavaScript'te ayrı olarak saklanıyordu:
22
22
23
23
<DiagramGroup>
24
24
@@ -36,43 +36,43 @@ JavaScript
36
36
37
37
</DiagramGroup>
38
38
39
-
But as the Web became more interactive, logic increasingly determined content. JavaScript was in charge of the HTML! This is why**in React, rendering logic and markup live together in the same place—components.**
39
+
Ancak Web daha etkileşimli hale geldikçe mantık, içeriğin önüne geçti. HTML'den JavaScript sorumluydu! İşte bu nedenle**React'te render mantığı ve biçimlendirme aynı yerde (bileşenlerde) birlikte bulunur.**
40
40
41
41
<DiagramGroup>
42
42
43
-
<Diagramname="writing_jsx_sidebar"height={330}width={325}alt="React component with HTML and JavaScript from previous examples mixed. Function name is Sidebar which calls the function isLoggedIn, highlighted in yellow. Nested inside the function highlighted in purple is the p tag from before, and a Form tag referencing the component shown in the next diagram.">
43
+
<Diagramname="writing_jsx_sidebar"height={330}width={325}alt="Önceki HTML ve JavaScript örneklerinin birlikte kullanıldığı React bileşeni. isLoggedIn fonksiyonunu çağıran sarı ile vurgulanan bölüm Sidebar fonksiyonudur. Mor renkle vurgulanan işlevin içinde, daha önceki p etiketi ve bir sonraki şemada gösterilen bileşene referans veren bir Form etiketi bulunur.">
44
44
45
-
`Sidebar.js` React component
45
+
`Sidebar.js` React bileşeni
46
46
47
47
</Diagram>
48
48
49
-
<Diagramname="writing_jsx_form"height={330}width={325}alt="React component with HTML and JavaScript from previous examples mixed. Function name is Form containing two handlers onClick and onSubmit highlighted in yellow. Following the handlers is HTML highlighted in purple. The HTML contains a form element with a nested input element, each with an onClick prop.">
49
+
<Diagramname="writing_jsx_form"height={330}width={325}alt="Önceki HTML ve JavaScript örneklerinin birlikte kullanıldığı React bileşeni. Sarı renkle vurgulanmış onClick ve onSubmit yöneticilerini içeren bölüm, Form fonksiyonudur. Bu fonksiyondan sonra, mor renkle vurgulanmış HTML gelir. HTML, her biri onClick prop'una sahip girdilerden oluşan bir form öğesini içerir.">
50
50
51
-
`Form.js` React component
51
+
`Form.js` React bileşeni
52
52
53
53
</Diagram>
54
54
55
55
</DiagramGroup>
56
56
57
-
Keeping a button's rendering logic and markup together ensures that they stay in sync with each other on every edit. Conversely, details that are unrelated, such as the button's markup and a sidebar's markup, are isolated from each other, making it safer to change either of them on their own.
57
+
Bir butonun render mantığını ve biçimlendirmesini bir arada tutmak, her değişiklikte birbirleriyle senkronize kalmalarını sağlar. Aksine, butonun biçimlendirmesi ve kenar çubuğunun biçimlendirmesi gibi birbiriyle ilgisi olmayan ayrıntılar, birbirinden izole edilir. Böylece herhangi birinin tek başına değiştirilmesi daha güvenli hale gelir.
58
58
59
-
Each React component is a JavaScript function that may contain some markup that React renders into the browser. React components use a syntax extension called JSX to represent that markup. JSX looks a lot like HTML, but it is a bit stricter and can display dynamic information. The best way to understand this is to convert some HTML markup to JSX markup.
59
+
Her React bileşeni; React'ın, tarayıcıda render ettiği bazı işaretlemeler içerebilen bir JavaScript fonksiyonudur. React bileşenleri, bu işaretlemeyi temsil etmek için JSX adı verilen bir söz dizimi uzantısı kullanır. JSX, HTML'e çok benzer ancak biraz daha katı kurallara sahiptir ve dinamik verileri gösterebilir. Bu konuyu anlamanın en etkili yolu, birkaç HTML'i JSX'e dönüştürerek uygulamalı olarak pratik yapmaktır.
60
60
61
61
<Note>
62
62
63
-
JSX and React are two separate things. They're often used together, but you *can*[use them independently](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html#whats-a-jsx-transform)of each other. JSX is a syntax extension, while React is a JavaScript library.
63
+
JSX ve React, iki ayrı kavramdır. Bunlar çoğunlukla birlikte kullanılır. Ancak, [bunları bağımsız olarak da](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html#whats-a-jsx-transform)*kullanabilirsiniz*. JSX bir söz dizimi uzantısıdır, React ise bir JavaScript kütüphanesidir.
64
64
65
65
</Note>
66
66
67
-
## Converting HTML to JSX {/*converting-html-to-jsx*/}
Suppose that you have some (perfectly valid) HTML:
69
+
Elinizde (tamamen geçerli) bir HTML olduğunu varsayalım:
70
70
71
71
```html
72
72
<h1>Hedy Lamarr's Todos</h1>
73
-
<img
74
-
src="https://i.imgur.com/yXOvdOSs.jpg"
75
-
alt="Hedy Lamarr"
73
+
<img
74
+
src="https://i.imgur.com/yXOvdOSs.jpg"
75
+
alt="Hedy Lamarr"
76
76
class="photo"
77
77
>
78
78
<ul>
@@ -82,7 +82,7 @@ Suppose that you have some (perfectly valid) HTML:
82
82
</ul>
83
83
```
84
84
85
-
And you want to put it into your component:
85
+
Ve bunu bileşeninize koymak istiyorsunuz:
86
86
87
87
```js
88
88
exportdefaultfunctionTodoList() {
@@ -92,7 +92,7 @@ export default function TodoList() {
92
92
}
93
93
```
94
94
95
-
If you copy and paste it as is, it will not work:
95
+
Olduğu gibi kopyalayıp yapıştırırsanız çalışmayacaktır:
96
96
97
97
98
98
<Sandpack>
@@ -102,9 +102,9 @@ export default function TodoList() {
102
102
return (
103
103
// This doesn't quite work!
104
104
<h1>Hedy Lamarr's Todos</h1>
105
-
<img
106
-
src="https://i.imgur.com/yXOvdOSs.jpg"
107
-
alt="Hedy Lamarr"
105
+
<img
106
+
src="https://i.imgur.com/yXOvdOSs.jpg"
107
+
alt="Hedy Lamarr"
108
108
class="photo"
109
109
>
110
110
<ul>
@@ -122,28 +122,28 @@ img { height: 90px }
122
122
123
123
</Sandpack>
124
124
125
-
This is because JSX is stricter and has a few more rules than HTML! If you read the error messages above, they'll guide you to fix the markup, or you can follow the guide below.
125
+
Bunun nedeni JSX'inHTML'den daha katı ve fazla kurala sahip olmasıdır! Yukarıdaki hata mesajları, biçimlendirmeyi düzeltmeniz için size yol gösterecektir. Hatayı çözmek için aşağıdaki kılavuzu da takip edebilirsiniz.
126
126
127
127
<Note>
128
128
129
-
Most of the time, React's on-screen error messages will help you find where the problem is. Give them a read if you get stuck!
129
+
Çoğu zaman, React'ın ekrandaki hata mesajları, sorunun nerede olduğunu bulmanıza yardımcı olacaktır. Takıldığınız yerde onları okuyun!
130
130
131
131
</Note>
132
132
133
-
## The Rules of JSX {/*the-rules-of-jsx*/}
133
+
## JSX Kuralları {/*the-rules-of-jsx*/}
134
134
135
-
### 1. Return a single root element {/*1-return-a-single-root-element*/}
135
+
### 1.Tek bir kök eleman döndürür {/*1-return-a-single-root-element*/}
136
136
137
-
To return multiple elements from a component, **wrap them with a single parent tag.**
137
+
Bileşenden birden fazla öğe döndürmek için**bunları, tek bir ana etiketle sarın**
138
138
139
-
For example, you can use a `<div>`:
139
+
Örneğin, `<div>` kullanabilirsiniz:
140
140
141
141
```js {1,11}
142
142
<div>
143
143
<h1>Hedy Lamarr's Todos</h1>
144
-
<img
145
-
src="https://i.imgur.com/yXOvdOSs.jpg"
146
-
alt="Hedy Lamarr"
144
+
<img
145
+
src="https://i.imgur.com/yXOvdOSs.jpg"
146
+
alt="Hedy Lamarr"
147
147
class="photo"
148
148
>
149
149
<ul>
@@ -153,14 +153,14 @@ For example, you can use a `<div>`:
153
153
```
154
154
155
155
156
-
If you don't want to add an extra `<div>`to your markup, you can write `<>` and `</>`instead:
156
+
Eğer fazladan bir `<div>`eklemek istemezseniz `<>` and `</>`kullanabilirsiniz:
157
157
158
158
```js {1,11}
159
159
<>
160
160
<h1>Hedy Lamarr's Todos</h1>
161
-
<img
162
-
src="https://i.imgur.com/yXOvdOSs.jpg"
163
-
alt="Hedy Lamarr"
161
+
<img
162
+
src="https://i.imgur.com/yXOvdOSs.jpg"
163
+
alt="Hedy Lamarr"
164
164
class="photo"
165
165
>
166
166
<ul>
@@ -169,27 +169,27 @@ If you don't want to add an extra `<div>` to your markup, you can write `<>` and
169
169
</>
170
170
```
171
171
172
-
This empty tag is called a *[Fragment.](/reference/react/Fragment)* Fragments let you group things without leaving any trace in the browser HTML tree.
172
+
Bu boş etiket, *[Fragment](/reference/react/Fragment)*olarak adlandırılır. Fragment'lar, tarayıcı HTML ağacında, herhangi bir iz bırakmadan, öğeleri gruplandırmanıza olanak tanır.
173
173
174
174
<DeepDive>
175
175
176
-
#### Why do multiple JSX tags need to be wrapped? {/*why-do-multiple-jsx-tags-need-to-be-wrapped*/}
176
+
#### Neden birden fazla JSX etiketinin sarılması gerekiyor? {/*why-do-multiple-jsx-tags-need-to-be-wrapped*/}
177
177
178
-
JSX looks like HTML, but under the hood it is transformed into plain JavaScript objects. You can't return two objects from a function without wrapping them into an array. This explains why you also can't return two JSX tags without wrapping them into another tag or a Fragment.
178
+
JSX, HTML gibi görünür ancak arka planda JavaScript nesnelerine dönüştürülür. Bir fonksiyondan iki nesneyi, bir diziye sarmadan döndüremezsiniz. Bu, iki JSX etiketini başka bir etikete veya bir Fragment'e sarmadan neden döndüremediğinizi de açıklar.
179
179
180
180
</DeepDive>
181
181
182
-
### 2. Close all the tags {/*2-close-all-the-tags*/}
JSX requires tags to be explicitly closed: self-closing tags like `<img>` must become `<img />`, and wrapping tags like `<li>oranges` must be written as `<li>oranges</li>`.
184
+
JSX, etiketlerin bariz bir şekilde kapatılmasını gerektirir:`<img>`gibi kendiliğinden kapanan etiketler, `<img />` bu şekilde kapatılmalıdır.`<li>oranges`gibi etiketler`<li>oranges</li>` şeklinde sarmalanmalıdır.
185
185
186
-
This is how Hedy Lamarr's image and list items look closed:
186
+
Hedy Lamarr'ın fotoğraf ve liste öğeleri bu şekilde kapatılmıştır:
187
187
188
188
```js {2-6,8-10}
189
189
<>
190
-
<img
191
-
src="https://i.imgur.com/yXOvdOSs.jpg"
192
-
alt="Hedy Lamarr"
190
+
<img
191
+
src="https://i.imgur.com/yXOvdOSs.jpg"
192
+
alt="Hedy Lamarr"
193
193
class="photo"
194
194
/>
195
195
<ul>
@@ -200,33 +200,33 @@ This is how Hedy Lamarr's image and list items look closed:
200
200
</>
201
201
```
202
202
203
-
### 3. camelCase <s>all</s> most of the things! {/*3-camelcase-salls-most-of-the-things*/}
203
+
### 3. camelCase <s>her şey</s> çoğu şey! {/*3-camelcase-salls-most-of-the-things*/}
204
204
205
-
JSX turns into JavaScript and attributes written in JSX become keys of JavaScript objects. In your own components, you will often want to read those attributes into variables. But JavaScript has limitations on variable names. For example, their names can't contain dashes or be reserved words like `class`.
205
+
JSX, JavaScript'e dönüşür ve JSX'te yazılan özellikler JavaScript nesnelerinin anahtarları haline gelir. Kendi bileşenlerinizde, genellikle bu özellikleri, değişken olarak okumak isteyeceksiniz. Ancak JavaScript'in değişken adları konusunda sınırlamaları vardır. Örneğin, adları tire içeremez veya `class` gibi rezerve edilmiş sözcükler olamaz.
206
206
207
-
This is why, in React, many HTML and SVG attributes are written in camelCase. For example, instead of `stroke-width` you use `strokeWidth`. Since `class` is a reserved word, in React you write `className` instead, named after the [corresponding DOM property](https://developer.mozilla.org/en-US/docs/Web/API/Element/className):
207
+
Bu nedenle, React'te, birçok HTML ve SVG özellikleri camelCase ile yazılır. Örneğin, `stroke-width` yerine `strokeWidth`. `class` rezerve edilmiş sözcük olduğu için React'te, bunun yerine [ilgiliDOMözelliğinden](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) sonra `className` yazarsınız:
208
208
209
209
```js {4}
210
-
<img
211
-
src="https://i.imgur.com/yXOvdOSs.jpg"
212
-
alt="Hedy Lamarr"
210
+
<img
211
+
src="https://i.imgur.com/yXOvdOSs.jpg"
212
+
alt="Hedy Lamarr"
213
213
className="photo"
214
214
/>
215
215
```
216
216
217
-
Youcan [findalltheseattributesinthelistofDOMcomponentprops.](/reference/react-dom/components/common) Ifyougetonewrong, don't worry—React will print a message with a possible correction to the [browser console.](https://developer.mozilla.org/docs/Tools/Browser_Console)
217
+
[Tüm bu nitelikleri DOMbileşeni prop'ları listesinde](/reference/react-dom/components/common) bulabilirsiniz. Eğer yanlış yaparsanız endişelenmeyin-React [tarayıcı konsoluna](https://developer.mozilla.org/docs/Tools/Browser_Console), yanlışınızı düzeltmeniz için bir mesaj yazdıracaktır.
218
218
219
219
<Pitfall>
220
220
221
-
For historical reasons, [`aria-*`](https://developer.mozilla.org/docs/Web/Accessibility/ARIA) and [`data-*`](https://developer.mozilla.org/docs/Learn/HTML/Howto/Use_data_attributes) attributes are written as in HTML with dashes.
221
+
Tarihi nedenlerden dolayı, [`aria-*`](https://developer.mozilla.org/docs/Web/Accessibility/ARIA) ve [`data-*`](https://developer.mozilla.org/docs/Learn/HTML/Howto/Use_data_attributes) özellikleri HTML'de olduğu gibi tire ile yazılır.
222
222
223
223
</Pitfall>
224
224
225
-
### Pro-tip: Use a JSX Converter {/*pro-tip-use-a-jsx-converter*/}
Converting all these attributes in existing markup can be tedious! We recommend using a [converter](https://transform.tools/html-to-jsx) to translate your existing HTML and SVG to JSX. Converters are very useful in practice, but it'sstillworthunderstandingwhatisgoingonsothatyoucancomfortablywriteJSXonyourown.
227
+
Mevcut biçimlendirmede, tüm bu özellikleri dönüştürmek can sıkıcı olabilir! Mevcut HTML ve SVG'nizi JSX'e çevirmek için bir [dönüştürücü](https://transform.tools/html-to-jsx) kullanmanızı öneririz. Dönüştürücüler pratikte çok kullanışlıdır. Yine de kendi başınıza rahatça JSX yazabilmeniz için neler olup bittiğini anlamakta fayda vardır.
228
228
229
-
Hereisyourfinalresult:
229
+
İşte final sonucunuz:
230
230
231
231
<Sandpack>
232
232
@@ -235,10 +235,10 @@ export default function TodoList() {
235
235
return (
236
236
<>
237
237
<h1>Hedy Lamarr's Todos</h1>
238
-
<img
239
-
src="https://i.imgur.com/yXOvdOSs.jpg"
240
-
alt="Hedy Lamarr"
241
-
className="photo"
238
+
<img
239
+
src="https://i.imgur.com/yXOvdOSs.jpg"
240
+
alt="Hedy Lamarr"
241
+
className="photo"
242
242
/>
243
243
<ul>
244
244
<li>Invent new traffic lights</li>
@@ -258,21 +258,21 @@ img { height: 90px }
258
258
259
259
<Recap>
260
260
261
-
NowyouknowwhyJSXexistsandhowtouseitincomponents:
261
+
Artık JSX'in neden var olduğunu ve bileşenlerde nasıl kullanılacağını biliyorsunuz:
0 commit comments