Skip to content

Commit 174169e

Browse files
committed
fix: requested changes
1 parent ae86040 commit 174169e

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

src/content/learn/updating-arrays-in-state.md

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@ title: State İçerisindeki Dizileri Güncelleme
44

55
<Intro>
66

7-
JavaScript'te diziler mutasyona uğratılabilir (mutable) ancak siz state'te sakladığınız dizileri mutasyona uğratılamaz (immutable) olarak görmelisiniz. Tıpkı nesnelerde olduğu gibi, state'te saklanan bir diziyi güncellemek istediğiniz zaman yeni bir dizi oluşturmanız (veya var olanın bir kopyasını oluşturmanız) ve ardından yeni oluşturduğunuz diziyi kullanmak için state'i güncellemeniz gerekmektedir.
7+
Diziler JavaScript'te değiştirilebilirdir, ancak bunları state içinde depolarken değiştirilemez olarak ele almalısınız. Tıpkı nesnelerde olduğu gibi, state'te depolanan bir diziyi güncellemek istediğinizde yeni bir dizi oluşturmanız (veya var olanın bir kopyasını oluşturmanız) ve ardından yeni oluşturduğunuz diziyi kullanmak için state'i güncellemeniz gerekir.
88

99
</Intro>
1010

1111
<YouWillLearn>
1212

1313
- React state'indeki bir diziye öğeler nasıl eklenir, çıkarılır ya da değiştirilir
14-
- Bir dizi içindeki nesne nasıl güncellenir
14+
- Dizi içindeki nesne nasıl güncellenir
1515
- Immer kullanarak dizi kopyalama işlemi daha az tekrarla nasıl yapılır
1616

1717
</YouWillLearn>
1818

19-
## Dizileri mutasyona uğratmadan güncelleme {/*updating-arrays-without-mutation*/}
19+
## Dizileri değiştirmeden güncelleme {/*updating-arrays-without-mutation*/}
2020

21-
JavaScript'te diziler de bir tür nesnedir. [Nesnelerde olduğu gibi](/learn/updating-objects-in-state), **React state'indeki dizileri salt okunur olarak görmelisiniz.** Bu, `arr[0] = 'bird'` şeklinde bir dizi içindeki öğeleri başka değerlere yeniden atamamanız, ayrıca `push()` ve `pop()` gibi dizileri mutasyona uğratan JavaScript metodlarını kullanmamanız gerektiği anlamına gelir.
21+
JavaScript'te diziler bir nesne türüdür. [Nesnelerde olduğu gibi](/learn/updating-objects-in-state), **React state'indeki dizileri salt okunur olarak görmelisiniz.** Bu, `arr[0] = 'bird'` şeklinde bir dizi içindeki öğeleri başka değerlere yeniden atamamanız, ayrıca `push()` ve `pop()` gibi dizileri mutasyona uğratan JavaScript metodlarını kullanmamanız gerektiği anlamına gelir.
2222

2323
Bu metodları kullanmak yerine, bir diziyi her güncellemek istediğinizde state setter fonksiyonunuza *yeni* bir dizi iletmelisiniz. Bunu yapmak için, `filter()` ve `map()` gibi diziyi mutasyona uğratmayan JavaScript metodlarını kullanarak orijinal diziden yeni bir dizi oluşturabilirsiniz. Ardından, state'inizi kopyaladığınız dizi olarak güncelleyebilirsiniz.
2424

@@ -44,9 +44,9 @@ React'te, `slice` (`p` yok!) metodunu daha sık kullanacaksınız çünkü state
4444

4545
</Pitfall>
4646

47-
### Bir diziye eklemek {/*adding-to-an-array*/}
47+
### Diziye öğe eklemek {/*adding-to-an-array*/}
4848

49-
`push()` metodu diziyi mutasyona uğratacaktır ancak biz bunu istemiyoruz.
49+
`push()` metodu diziyi mutasyona uğratacaktır, ki bunu istemezsiniz:
5050

5151
<Sandpack>
5252

@@ -88,13 +88,13 @@ button { margin-left: 5px; }
8888

8989
</Sandpack>
9090

91-
Bunun yerine, mevcut öğeleri *ve* dizinin son elemanı olarak yeni öğeyi içeren *yeni* diziyi oluşturun. Bunu yapmanın birden çok yolu vardır ancak en kolay yol `...` [dizi spread](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#spread_in_array_literals) sözdizimini kullanmaktır:
91+
Bunun yerine, mevcut öğeleri *ve* son eleman olarak yeni öğeyi içeren *yeni* diziyi oluşturun. Bunu yapmanın birden çok yolu vardır ancak en kolay yol `...` [dizi spread](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax#spread_in_array_literals) sözdizimini kullanmaktır:
9292

9393
```js
9494
setArtists( // State'i yeni bir dizi
9595
[ // ile değiştirin
96-
...artists, // bu eski öğelerin hepsini içerir
97-
{ id: nextId++, name: name } // ve dizinin sonuna eklenecek yeni öğe
96+
...artists, // bu eski öğelerin tümünü
97+
{ id: nextId++, name: name } // ve sona eklenecek yeni öğeyi içerir.
9898
]
9999
);
100100
```
@@ -152,9 +152,9 @@ setArtists([
152152

153153
Bu şekilde, spread sözdizimi `push()` (öğeyi dizinin sonuna eklemek) ve `unshift()` (öğeyi dizinin başına eklemek) metodlarının görevini yapabilir. Yukarıdaki sandbox'ta deneyebilirsiniz!
154154

155-
### Bir diziden çıkartmak {/*removing-from-an-array*/}
155+
### Diziden öğe çıkartma {/*removing-from-an-array*/}
156156

157-
Diziden bir öğeyi çıkartmanın en kolay yolu o öğeyi *filtrelemek'tir.* Bir başka deyişle, o öğeyi içermeyen yeni bir dizi oluşturmaktır. Bunu yapmak için `filter` metodunu kullanabilirsiniz. Örneğin:
157+
Diziden bir öğeyi çıkartmanın en kolay yolu o öğeyi *filtrelemektir.* Bir başka deyişle, o öğeyi içermeyen yeni bir dizi oluşturmaktır. Bunu yapmak için `filter` metodunu kullanabilirsiniz. Örneğin:
158158

159159
<Sandpack>
160160

@@ -206,11 +206,11 @@ setArtists(
206206
);
207207
```
208208

209-
Burada `artists.filter(a => a.id !== artist.id)` ifadesi "ID'leri `artist.id`'den farklı olan `artists`'den oluşan yeni bir dizi oluştur" anlamına gelmektedir. Diğer bir deyişle, her bir artist'e karşılık gelen "Sil" butonu o artist'i diziden filtreleyecek ve nihai dizi ile yeniden render isteği gönderecektir. `filter` metodunun orijinal diziyi değiştirmediğini unutmayın.
209+
Burada `artists.filter(a => a.id !== artist.id)` ifadesi "`artist` dizisini kullanarak ID'leri `artist.id`'den farklı olan öğelerle yeni bir dizi oluştur" anlamına gelmektedir. Diğer bir deyişle, her bir artist'e karşılık gelen "Sil" butonu o artist'i diziden filtreleyecek ve nihai dizi ile yeniden render isteği gönderecektir. `filter` metodunun orijinal diziyi değiştirmediğini unutmayın.
210210

211-
### Bir diziyi dönüştürmek {/*transforming-an-array*/}
211+
### Diziyi dönüştürme {/*transforming-an-array*/}
212212

213-
Eğer dizideki bazı ya da tüm öğeleri değiştirmek isterseniz **yeni** bir dizi oluşturmak için `map()` metodunu kullanabilirsiniz. `map`'e ileteceğiniz fonksiyon, verisine veya indeksine (veya her ikisine) dayalı olarak her bir öğeyle ne yapacağınızı belirler.
213+
Dizideki bazı ya da tüm öğeleri değiştirmek isterseniz **yeni** bir dizi oluşturmak için `map()` metodunu kullanabilirsiniz. `map`'e ileteceğiniz fonksiyon, verisine veya indeksine (veya her ikisine) bağlı olarak her bir öğeyle ne yapacağınızı belirler.
214214

215215
Bu örnekte dizi, iki daire ve bir karenin koordinatlarını içermektedir. Butona tıkladığınız zaman sadece daireler 50 piksel aşağı hareket etmektedir. Bunu, `map()` metodunu kullanıp yeni bir veri dizisi oluşturarak yapar:
216216

@@ -278,7 +278,7 @@ body { height: 300px; }
278278

279279
</Sandpack>
280280

281-
### Bir dizideki öğeleri değiştirmek {/*replacing-items-in-an-array*/}
281+
### Dizideki öğeleri değiştirme {/*replacing-items-in-an-array*/}
282282

283283
Bir dizideki bir veya daha fazla öğeyi değiştirmek oldukça sık istenmektedir. `arr[0] = 'bird'` gibi atamalar yapmak orijinal diziyi mutasyona uğrattığı için burada da `map` metodunu kullanmak mantıklı olacaktır.
284284

@@ -332,11 +332,11 @@ button { margin: 5px; }
332332

333333
</Sandpack>
334334

335-
### Dizide belli bir konuma eklemek {/*inserting-into-an-array*/}
335+
### Dizide belli bir konuma öğe ekleme {/*inserting-into-an-array*/}
336336

337-
Bazen bir öğeyi ne dizinin başına ne de dizinin sonuna değil de belirlediğiniz başka bir konuma eklemek isteyebilirsiniz. Bunu yapmak için, `...` dizi spread sözdizimini `slice()` metodu ile beraber kullanabilirsiniz. `slice()` metodu diziden bir "dilim (slice)" almanızı sağlar. Yeni öğeyi eklemek için, eklemek istediğiniz konumdan önceki dilimden spread sözdizimi ile yeni bir dizi oluşturacak, ardından yeni öğeyi ekleyecek ve son olarak da orijinal dizinin geri kalanını ekleyeceksiniz.
337+
Bazen bir öğeyi dizinin başına ya da sonuna değil de belirli bir konuma eklemek isteyebilirsiniz. Bunu yapmak için, `...` dizi spread sözdizimini `slice()` metodu ile beraber kullanabilirsiniz. `slice()` metodu diziden bir "dilim (slice)" almanızı sağlar. Yeni öğeyi eklemek için, eklemek istediğiniz konumdan önceki dilimden spread sözdizimi ile yeni bir dizi oluşturacak, ardından yeni öğeyi ekleyecek ve son olarak da orijinal dizinin geri kalanını ekleyeceksiniz.
338338

339-
Bu örnekte, Ekle butonu her zaman `1` indeksinde ekler:
339+
Bu örnekte, Ekle butonu her zaman `1.` indekse ekler:
340340

341341
<Sandpack>
342342

@@ -396,9 +396,9 @@ button { margin-left: 5px; }
396396

397397
</Sandpack>
398398

399-
### Bir dizide başka değişiklikler yapmak {/*making-other-changes-to-an-array*/}
399+
### Dizide başka değişiklikler yapma {/*making-other-changes-to-an-array*/}
400400

401-
Spread sözdizimi, `map()` ve `filter()` metodları gibi diziyi mutasyona uğratmayan yöntemlerle yapamayacağınız bazı şeyler vardır. Örneğin, bir diziyi sıralamak veya dizi öğelerini ters çevirmek isteyebilirsiniz. JavaScript'in `reverse()` ve `sort()` metodları orijinal diziyi mutasyona uğrattığından dolayı direkt olarak bu metodları kullanamazsınız.
401+
Spread sözdizimi veya `map()` ve `filter()` gibi diziyi mutasyona uğratmayan metodlarla yapamayacağınız bazı şeyler vardır. Örneğin, bir diziyi sıralamak veya dizi öğelerini ters çevirmek isteyebilirsiniz. JavaScript'in `reverse()` ve `sort()` metodları orijinal diziyi değiştirir, bu nedenle doğrudan bu metodları kullanamazsınız.
402402

403403
**Ancak, önce diziyi kopyalayabilir ve sonra o dizi üzerinde değişiklikler yapabilirsiniz.**
404404

@@ -454,13 +454,13 @@ setList(nextList);
454454

455455
`nextList` ve `list` iki farklı dizi olmasına rağmen, **`nextList[0]` ve `list[0]` ifadeleri aynı nesneyi işaret eder.** Yani `nextList[0].seen` değerini değiştirirseniz, aynı zamanda `list[0].seen` değerini de değiştirmiş olursunuz. Bu, state'i mutasyona uğratmaktır ki bundan kaçınmalısınız! Bu sorunu [iç içe JavaScript nesnelerini güncelleme](/learn/updating-objects-in-state#updating-a-nested-object) yöntemine benzer şekilde, değiştirmek istediğiniz öğeleri mutasyona uğratmak yerine tek tek kopyalayarak çözebilirsiniz. Nasıl yapıldığını görelim.
456456

457-
## Dizi içindeki nesneleri güncelleme {/*updating-objects-inside-arrays*/}
457+
## Dizideki nesneleri güncelleme {/*updating-objects-inside-arrays*/}
458458

459-
Nesneler dizilerin _gerçekten_ "içinde" değillerdir. Yazdığınız kodda "içeride" olarak görünebilir ancak bir dizideki her nesne, dizinin "işaret ettiği" ayrı bir değerdir. Bu yüzden `list[0]` gibi iç içe ifadeleri değiştirirken dikkatli olmalısınız. Başka bir kişinin sanat eseri listesi (artwork list), dizinin aynı öğesine işaret edebilir!
459+
Nesneler _gerçekte_ dizilerin "içinde" yer almazlar. Yazdığınız kodda "içinde" gibi görünebilir ancak bir dizideki her nesne, dizinin "işaret ettiği" ayrı bir değerdir. Bu yüzden `list[0]` gibi iç içe ifadeleri değiştirirken dikkatli olmalısınız. Başka bir kişinin sanat eseri listesi (artwork list), dizinin aynı öğesine işaret edebilir!
460460

461461
**İç içe geçmiş state'i güncellerken, güncellemek istediğiniz noktadan en üst düzeye kadar kopyalar oluşturmanız gerekir.** Şimdi bunun nasıl olduğunu görelim.
462462

463-
Bu örnekte, iki farklı sanat eseri listesi aynı ilk state'e (initialList) sahiptir. Bu listelerin izole olmaları gerekirdi ancak bir mutasyon nedeniyle yanlışlıkla state'leri paylaşmaktadırlar ve listedeki bir kutuyu işaretlemek diğer listedeki kutuları da etkilemektedir:
463+
Bu örnekte, iki farklı sanat eseri listesi aynı başlangıç state'ine sahiptir. Bu listelerin izole olmaları gerekirdi ancak bir mutasyon nedeniyle yanlışlıkla state'leri paylaşmaktadırlar ve listedeki bir kutuyu işaretlemek diğer listeyi de etkilemektedir:
464464

465465
<Sandpack>
466466

@@ -792,7 +792,7 @@ Arka planda Immer, `draft`'a yaptığınız değişikliklere göre her zaman bir
792792

793793
#### Alışveriş sepetindeki ürünü güncelleyin {/*update-an-item-in-the-shopping-cart*/}
794794

795-
`handleIncreaseClick` fonksiyonunun mantığını yazın ki "+" butonuna tıklandığında ürünün sepetteki sayısı artsın:
795+
"+" butonuna tıklandığında ilgili sayının artması için `handleIncreaseClick` mantığını doldurun:
796796

797797
<Sandpack>
798798

@@ -1413,7 +1413,7 @@ ul, li { margin: 0; padding: 0; }
14131413

14141414
#### Immer kullanarak mutasyonları düzeltin {/*fix-the-mutations-using-immer*/}
14151415

1416-
Bu örnekle bir önceki örnek aynıdır. Bu sefer mutasyonları Immer kullanarak düzelteceğiz. `useImmer` halihazırda import edilmiştir, yani kullanmak için `todos` state değişkenini değiştirmeniz gerekmektedir.
1416+
Bu örnekle bir önceki örnek aynıdır. Bu sefer Immer kullanarak mutasyonları düzeltin. Kolaylık sağlaması için, `useImmer` halihazırda içeri aktarılmıştır. Bunu kullanarak `todos` state değişkenini değiştirmeniz gerekir.
14171417

14181418
<Sandpack>
14191419

0 commit comments

Comments
 (0)