Skip to content

Commit 2bd695e

Browse files
committed
update requested changes
1 parent 3136a3a commit 2bd695e

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

src/content/learn/referencing-values-with-refs.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Bir bileşenin "hatırlamasını" istediğiniz bilgi varsa, ancak bu bilginin [y
1717

1818
</YouWillLearn>
1919

20-
## Bir bileşene ref eklemek {/*adding-a-ref-to-a-component*/}
20+
## Bir bileşene ref eklemek {/*adding-a-ref-to-your-component*/}
2121

2222
Bileşeninize bir ref eklemek için, `useRef` Hook'unu React'ten içe aktarın:
2323

@@ -98,7 +98,7 @@ export default function Stopwatch() {
9898
setNow(Date.now());
9999

100100
setInterval(() => {
101-
// "now" state değişkenini her 10ms'de günceller.
101+
// Şuanki zamanı her 10ms'de bir güncelle.
102102
setNow(Date.now());
103103
}, 10);
104104
}
@@ -171,9 +171,9 @@ export default function Stopwatch() {
171171

172172
Ne zaman bir bilgi render etmek için kullanılırsa, onu state'te tutun. Bir bilgi parçası yalnızca olay işleyicileri için gerekiyorsa ve değiştirmek bir yeniden render gerektirmiyorsa, bir ref kullanmak daha verimli olabilir.
173173

174-
## Ref ve State arasındaki farklar {/*differences-between-refs-and-state*/}
174+
## Ref ve state arasındaki farklar {/*differences-between-refs-and-state*/}
175175

176-
Muhtemelen ref'lerin state'ten daha "esnek" olduğunu düşünüyorsunuz. Örneğin, ref'leri state ayarlama fonksiyonu olmadan değiştirebilirsiniz. Ama çoğu zaman state kullanmak isteyeceksiniz. Ref'ler bir "kaçış noktası"dır ve bunlara çok fazla güvenmemelisiniz. State ve ref'ler arasındaki farkları görelim:
176+
Muhtemelen ref'lerin state'ten daha "esnek" olduğunu düşünüyorsunuz. Örneğin, ref'leri state ayarlama fonksiyonu olmadan değiştirebilirsiniz. Ama çoğu zaman state kullanmak isteyeceksiniz. Ref'ler çoğunlukla ihtiyacınız olmayan bir "kaçış noktası"dır. State ve ref'ler arasındaki farkları görelim:
177177

178178

179179

@@ -184,7 +184,7 @@ Muhtemelen ref'lerin state'ten daha "esnek" olduğunu düşünüyorsunuz. Örne
184184
| Değiştirilebilir; `current` değerini render işlemi dışında da değiştirilebilir ve güncelleyebilirsiniz. | Değiştirilemez; yeniden render tetiklemek için state değiştirme fonksiyonunu kullanmalısınız. |
185185
| Render işlemi sırasında `current` değerini okumamalısınız (veya yazmamalısınız). | State'i her zaman okuyabilirsiniz. Ancak, her render'ın değişmeyen kendi [anlık görüntüsü](/learn/state-as-a-snapshot) vardır. |
186186

187-
State kullanılarak oluşturulmuş bir sayaç düğmesi:
187+
State kullanılarak oluşturulmuş bir sayaç buton'u:
188188

189189
<Sandpack>
190190

@@ -254,21 +254,21 @@ function useRef(initialValue) {
254254

255255
İlk render sırasında, `useRef` `{ current: initialValue }` döndürür. Bu nesne React tarafından saklanır, bu yüzden bir sonraki render sırasında aynı nesne döndürülür. Bu örnekte state ayarlama fonksiyonunun kullanılmadığına dikkat edin. Her zaman aynı nesneyi döndürmesi gerektiği için gereksizdir!
256256

257-
React `useRef`'i içinde sağladığı için, pratikte yeterince yaygındır. Fakat onu bir ayarlayıcı olmadan normal bir state değişkeni olarak düşünebilirsiniz. Nesne yönelimli programlamaya aşinaysanız, ref'ler size nesne değişkenlerini hatırlatabilir - fakat `this.something` yerine `somethingRef.current` yazarsınız.
257+
Pratikte yeterince yaygın olduğu için, React `useRef`'i içinde sağlar. Fakat onu bir ayarlayıcı olmadan normal bir state değişkeni olarak düşünebilirsiniz. Nesne yönelimli programlamaya aşinaysanız, ref'ler size nesne değişkenlerini hatırlatabilir - fakat `this.something` yerine `somethingRef.current` yazarsınız.
258258

259259
</DeepDive>
260260

261261
## Ref'ler ne zaman kullanılmalıdır? {/*when-to-use-refs*/}
262262

263-
Genellikle, bileşeninizin React dışına çıkması ve harici API'lar (genellikle bileşenin görünümünü etkilemeyen bir tarayıcı API'si olabilir) ile iletişim kurması gerektiğinde bir ref kullanırsınız.
263+
Genellikle, bileşeninizin React "dışına çıkması" ve harici API'lar (genellikle bileşenin görünümünü etkilemeyen bir tarayıcı API'si olabilir) ile iletişim kurması gerektiğinde bir ref kullanırsınız. İşte bu nadir durumlara birkaç örnek:
264264

265265
- [timeout ID'lerini](https://developer.mozilla.org/docs/Web/API/setTimeout) saklamak
266266
- [DOM elemanlarını](https://developer.mozilla.org/docs/Web/API/Element) saklamak ve manipüle etmek. Bunu [bir sonraki sayfada](/learn/manipulating-the-dom-with-refs) ele alacağız.
267267
- JSX'i hesaplamak için gerekli olmayan diğer nesneleri saklamak.
268268

269269
Eğer bileşeninizin bir değeri saklaması gerekiyorsa, ancak render mantığını etkilemiyorsa, ref'leri seçin.
270270

271-
## Ref'ler için en iyi uygulamalar {/*refler-için-en-iyi-uygulamalar*/}
271+
## Ref'ler için en iyi pratikler {/*best-practices-for-refs*/}
272272

273273
Bu prensipleri takip etmek bileşenlerinizi daha öngörülebilir hale getirecektir:
274274

@@ -283,7 +283,7 @@ ref.current = 5;
283283
console.log(ref.current); // 5
284284
```
285285

286-
Bunun nedeni **ref'in kendisi normal bir JavaScript nesnesi olması** ve öyle davranılmasıdır.
286+
Bunun nedeni **ref'in kendisi normal bir JavaScript nesnesi olması** ve öyle davranılmasıdır.
287287

288288

289289
Ayrıca bir ref ile çalışırken [mutasyondan kaçınmaya](/learn/updating-objects-in-state) gerek yoktur. Mutasyona uğrayan nesne render işlemi için kullanılmıyorsa, React ref veya içeriğiyle ne yaptığınızı umursamaz.
@@ -307,9 +307,9 @@ Bir ref'i herhangi bir değere işaret edecek şekilde ayarlayabilirsiniz. Fakat
307307

308308
<Challenges>
309309

310-
#### Bozuk sohbet inputunu düzelt {/*fix-a-broken-chat-input*/}
310+
#### Bozuk bir sohbet inputunu düzelt {/*fix-a-broken-chat-input*/}
311311

312-
Bir mesaj yazın ve "Gönder" düğmesine basın. "Gönderildi!" uyarısını görmek için üç saniye beklemeniz gerektiğini fark edeceksiniz. Bu gecikme sırasında "Geri Al" düğmesini görebilirsiniz. Ona tıklayın. Bu "Geri Al" düğmesinin "Gönderildi!" mesajının görünmesini durdurması gerekiyor. "Geri Al" düğmesi tıklandığında `handleSend` sırasında kaydedilen timeout ID ile [`clearTimeout`](https://developer.mozilla.org/en-US/docs/Web/API/clearTimeout) çağrısı yapıyor. Ancak, "Geri Al" tıklandıktan sonra bile "Gönderildi!" mesajı hala görünüyor. Neden çalışmadığını bulun ve düzeltin.
312+
Bir mesaj yazın ve "Gönder" butonunna basın. "Gönderildi!" uyarısını görmek için üç saniye beklemeniz gerektiğini fark edeceksiniz. Bu gecikme sırasında "Geri Al" butonunu görebilirsiniz. Ona tıklayın. Bu "Geri Al" butonunun "Gönderildi!" mesajının görünmesini durdurması gerekiyor. "Geri Al" butonuna tıklandığında `handleSend` sırasında kaydedilen timeout ID ile [`clearTimeout`](https://developer.mozilla.org/en-US/docs/Web/API/clearTimeout) çağrısı yapıyor. Ancak, "Geri Al" tıklandıktan sonra bile "Gönderildi!" mesajı hala görünüyor. Neden çalışmadığını bulun ve düzeltin.
313313

314314
<Hint>
315315

@@ -420,7 +420,7 @@ export default function Chat() {
420420

421421
#### Yeniden render edilemeyen bileşeni düzelt {/*fix-a-component-failing-to-re-render*/}
422422

423-
Bu düğme "Açık" ve "Kapalı" arasında geçiş yapmalıdır. Ancak her zaman "Kapalı" olarak gözüküyor. Bu kodda ne yanlış? Düzeltin.
423+
Bu buton "Açık" ve "Kapalı" arasında geçiş yapmalıdır. Ancak her zaman "Kapalı" olarak gözüküyor. Bu kodda ne yanlış? Düzeltin.
424424

425425
<Sandpack>
426426

@@ -444,7 +444,7 @@ export default function Toggle() {
444444

445445
<Solution>
446446

447-
Bu örnekte bir ref'in geçerli değeri render çıktısını hesaplamak için kullanılıyor: `{isOnRef.current ? 'Açık' : 'Kapalı'}`. Bu, bu bilginin bir ref'te olmaması gerektiğinin ve bunun yerine state'e konması gerektiğinin bir işaretidir. Düzeltmek için ref'i kaldırın ve yerine state kullanın:
447+
Bu örnekte bir ref'in geçerli değeri render çıktısını hesaplamak için kullanılıyor: `{isOnRef.current ? 'Açık' : 'Kapalı'}`. Bu, ilgili bilginin bir ref'te olmaması gerektiğinin ve bunun yerine state'e konması gerektiğinin bir işaretidir. Düzeltmek için ref'i kaldırın ve yerine state kullanın:
448448

449449
<Sandpack>
450450

@@ -470,15 +470,15 @@ export default function Toggle() {
470470

471471
#### Debouncing'i düzeltin {/*fix-debouncing*/}
472472

473-
Bu örnekte tüm düğme tıklama işleyicileri ["debounced"](https://redd.one/blog/debounce-vs-throttle). Bu ne anlama geldiğini görmek için bir düğmeye basın. Mesajın bir saniye sonra göründüğünü fark edeceksiniz. Mesajı beklerken düğmeye basarsanız, zamanlayıcı sıfırlanır. Yani aynı düğmeye hızlıca birkaç kez tıklamaya devam ederseniz, mesaj tıklamayı bıraktıktan bir saniye sonra görünecektir. Debouncing, kullanıcının "bir şeyler yapmayı durdurana kadar" bazı eylemleri geciktirmenizi sağlar.
473+
Bu örnekte tüm buton tıklama işleyicileri ["debounce edilmiştir"](https://redd.one/blog/debounce-vs-throttle). Bunun ne anlama geldiğini görmek için bir butona basın. Mesajın bir saniye sonra göründüğünü fark edeceksiniz. Mesajı beklerken düğmeye basarsanız, zamanlayıcı sıfırlanır. Yani aynı düğmeye hızlıca birkaç kez tıklamaya devam ederseniz, mesaj tıklamayı bıraktıktan bir saniye sonra görünecektir. Debouncing, kullanıcının "bir şeyler yapmayı durdurana kadar" bazı eylemleri geciktirmenizi sağlar.
474474

475-
Örnek çalışıyor fakat tam olarak istenildiği gibi değil. Düğmeler bağımsız değil. Problemi görmek için bir düğmeye basın ve hemen başka bir düğmeye basın. Biraz bekledikten sonra her iki düğmenin de mesajını görmeyi beklersiniz. Fakat sadece son düğmenin mesajı görünüyor. İlk basılan düğmenin mesajı kayboluyor.
475+
Örnek çalışıyor, fakat tam olarak istenildiği gibi değil. Butonlar birbirinden bağımsız değil. Problemi görmek için bir butona basın ve ardından hemen başka bir butona basın. Biraz bekledikten sonra her iki butonun de mesajını görmeyi beklersiniz. Fakat sadece son butonun mesajı görünüyor. İlk basılan butonun mesajı kayboluyor.
476476

477-
Neden düğmeler birbirlerine karışıyor? Sorunu bulun ve düzeltin.
477+
Neden butonlar birbirini etkiliyor? Sorunu bulun ve düzeltin.
478478

479479
<Hint>
480480

481-
Son timout ID değişkeni tüm `DebouncedButton` bileşenleri arasında paylaşılıyor. Bu yüzden bir düğmeye basmak başka bir düğmenin zamanlayıcısını sıfırlıyor. Her düğmede ayrı bir timeout ID değişkeni saklayabilir misiniz?
481+
Son timout ID değişkeni tüm `DebouncedButton` bileşenleri arasında paylaşılıyor. Bu yüzden bir butona basmak başka bir butonun zamanlayıcısını sıfırlıyor. Her butonda ayrı bir timeout ID değişkeni saklayabilir misiniz?
482482

483483
</Hint>
484484

@@ -531,7 +531,7 @@ button { display: block; margin: 10px; }
531531

532532
<Solution>
533533

534-
`timeoutId` değişkeni tüm bileşenler arasında paylaşılıyor. Bu yüzden ikinci düğmeye basmak ilk düğmenin bekleyen zamanlayıcısını sıfırlıyor. Bu sorunu çözmek için zamanlayıcıyı ref'te tutmalıyız. Her düğmenin kendi ref'i olacak, böylece birbirleriyle çakışmayacaklar. İki düğmeye hızlıca basarsanız, her ikisinin de mesajını göreceksiniz.
534+
`timeoutId` değişkeni tüm bileşenler arasında paylaşılıyor. Bu yüzden ikinci butona basmak ilk butonun bekleyen zamanlayıcısını sıfırlıyor. Bu sorunu çözmek için zamanlayıcıyı ref'te tutmalıyız. Her butonun kendi ref'i olacak, böylece birbirleriyle çakışmayacaklar. Dikkat ederseniz, iki butona hızlıca basmak her ikisinin de mesajını gösterecektir.
535535

536536
<Sandpack>
537537

0 commit comments

Comments
 (0)