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/reference/react/useEffect.md
+18-72Lines changed: 18 additions & 72 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,15 +44,9 @@ function ChatRoom({ roomId }) {
44
44
45
45
#### Parametreler {/*parameters*/}
46
46
47
-
<<<<<<< HEAD
48
-
* `setup`: Effect'inizin mantığını içeren fonksiyon. Kurulum (setup) fonksiyonunuz isteğe bağlı olarak *temizleme (cleanup)* fonksiyonu da döndürebilir. Bileşeniniz DOM'a eklendiğinde, React kurulum fonksiyonunuzu çalıştıracaktır. Değişen bağımlılıklar ile her yeniden render işleminden sonra, React önce temizleme fonksiyonunu (eğer sağladıysanız) eski değerlerle çalıştıracak ve ardından kurulum fonksiyonunuzu yeni değerlerle çalıştıracaktır. Bileşeniniz DOM'dan kaldırıldıktan sonra, React temizleme fonksiyonunuzu çalıştıracaktır.
49
-
50
-
* **Opsiyonel** `bağımlılıklar`: `kurulum` (`setup`) kodunun içinde referansı olan tüm reaktif değerlerin listesi. Reaktif değerler prop'ları, state'i ve bileşeninizin gövdesi içinde bildirilen tüm değişkenleri ve fonksiyonları içerir. Linter'ınız [React için yapılandırılmış](/learn/editor-setup#linting) ise, her reaktif değerin bağımlılık olarak doğru bir şekilde belirtildiğini doğrulayacaktır. Bağımlılık listesi sabit sayıda öğeye sahip olmalı ve `[dep1, dep2, dep3]` şeklinde satır içinde yazılmalıdır. React, [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) karşılaştırmasını kullanarak her bağımlılığı önceki değeri ile karşılaştırır. Eğer bağımlılık listesini boş bırakırsanız, Effect'iniz her yeniden render'dan sonra tekrar çalışacaktır. [Bağımlılık dizisi iletmenin, boş dizi iletmenin ve hiç bağımlılık olmaması arasındaki farkı inceleyin.](#examples-dependencies)
51
-
=======
52
-
* `setup`: The function with your Effect's logic. Your setup function may also optionally return a *cleanup* function. When your [component commits](/learn/render-and-commit#step-3-react-commits-changes-to-the-dom), React will run your setup function. After every commit with changed dependencies, React will first run the cleanup function (if you provided it) with the old values, and then run your setup function with the new values. After your component is removed from the DOM, React will run your cleanup function.
53
-
54
-
* **optional** `dependencies`: The list of all reactive values referenced inside of the `setup` code. Reactive values include props, state, and all the variables and functions declared directly inside your component body. If your linter is [configured for React](/learn/editor-setup#linting), it will verify that every reactive value is correctly specified as a dependency. The list of dependencies must have a constant number of items and be written inline like `[dep1, dep2, dep3]`. React will compare each dependency with its previous value using the [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) comparison. If you omit this argument, your Effect will re-run after every commit of the component. [See the difference between passing an array of dependencies, an empty array, and no dependencies at all.](#examples-dependencies)
55
-
>>>>>>> 2da4f7fbd90ddc09835c9f85d61fd5644a271abc
47
+
* `setup`: Effect’inizin mantığını içeren fonksiyondur. `setup` fonksiyonunuz isteğe bağlı olarak bir *cleanup* (temizleme) fonksiyonu da döndürebilir. Bileşeniniz [commit edildiğinde](/learn/render-and-commit#step-3-react-commits-changes-to-the-dom), React `setup` fonksiyonunu çalıştırır. Bağımlılıkları değişen her commit’ten sonra React, önce (varsa) eski değerlerle *cleanup* fonksiyonunu çalıştırır, ardından yeni değerlerle `setup` fonksiyonunu tekrar çalıştırır. Bileşeniniz DOM’dan kaldırıldıktan sonra ise React *cleanup* fonksiyonunu çalıştırır.
48
+
49
+
* **opsiyonel** `dependencies`: `setup` kodu içinde referans verilen tüm **reactive values**’ların listesidir. Reactive values; props, state ve bileşen gövdesi içinde doğrudan tanımlanan tüm değişkenler ve fonksiyonları kapsar. Eğer linter’ınız [React için yapılandırılmışsa](/learn/editor-setup#linting), her reactive value’nun dependency olarak doğru şekilde belirtildiğini doğrular. Dependency listesi sabit sayıda öğe içermeli ve `[dep1, dep2, dep3]` şeklinde inline olarak yazılmalıdır. React, her bir dependency’yi önceki değeriyle [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is) karşılaştırması kullanarak kıyaslar. Bu argümanı atladığınızda, Effect’iniz bileşenin her commit’inden sonra yeniden çalışır. [Dependency array verilmesi, boş array verilmesi ve hiç dependency verilmemesi arasındaki farkı inceleyin.](#examples-dependencies)
56
50
57
51
#### Dönüş Değeri {/*returns*/}
58
52
@@ -110,27 +104,15 @@ function ChatRoom({ roomId }) {
110
104
111
105
**React, kurulum ve temizleme fonksiyonlarınızı gerektiğinde birden çok kez olabilecek şekilde çağırır:**
2. Bileşeninizin <CodeStep step={3}>bağımlılıklarının</CodeStep> değiştiği her yeniden render etmeden sonra:
116
-
- İlk olarak, <CodeStep step={2}>temizleme kodunuz</CodeStep> eski prop'lar ve state ile çalışır.
117
-
- Daha sonra, <CodeStep step={1}>kurulum kodunuz</CodeStep> yeni prop'lar ve state ile çalışır.
118
-
3. <CodeStep step={2}>temizleme kodunuz</CodeStep> son kez bileşeniniz sayfadan kaldırıldığında çalışır *(DOM'dan kaldırıldığında).*
119
-
=======
120
-
1. Your <CodeStep step={1}>setup code</CodeStep> runs when your component is added to the page *(mounts)*.
121
-
2. After every commit of your component where the <CodeStep step={3}>dependencies</CodeStep> have changed:
122
-
- First, your <CodeStep step={2}>cleanup code</CodeStep> runs with the old props and state.
123
-
- Then, your <CodeStep step={1}>setup code</CodeStep> runs with the new props and state.
124
-
3. Your <CodeStep step={2}>cleanup code</CodeStep> runs one final time after your component is removed from the page *(unmounts).*
125
-
>>>>>>> 2da4f7fbd90ddc09835c9f85d61fd5644a271abc
107
+
1. Bileşeniniz sayfaya eklendiğinde *(mount olurken)* <CodeStep step={1}>setup code</CodeStep> çalışır.
108
+
2. <CodeStep step={3}>dependencies</CodeStep>’lerin değiştiği her bileşen commit’inden sonra:
109
+
- Önce, <CodeStep step={2}>cleanup code</CodeStep> eski props ve state değerleriyle çalışır.
110
+
- Ardından, <CodeStep step={1}>setup code</CodeStep> yeni props ve state değerleriyle çalışır.
111
+
3. Bileşeniniz sayfadan kaldırıldıktan *(unmount olduktan)* sonra <CodeStep step={2}>cleanup code</CodeStep> son bir kez daha çalışır.
126
112
127
113
**Yukarıdaki örneği biraz açıklayalım.**
128
114
129
-
<<<<<<< HEAD
130
-
Yukarıdaki `ChatRoom` bileşeni sayfaya eklendiğinde, başlangıç `serverUrl` ve `roomId` ile sohbet odasına bağlanacaktır. Eğer `serverUrl` veya `roomId`'den biri yeniden render yüzünden değişirse (diyelim ki kullanıcı başka bir sohbet odasını seçerse), Effect'iniz önceki odayla *bağlantısını kesecek ve bir sonraki odaya bağlanacaktır.* `ChatRoom` bileşeniniz sayfadan kaldırıldığında, Effect'iniz son bir defa bağlantıyı kesecektir.
131
-
=======
132
-
When the `ChatRoom` component above gets added to the page, it will connect to the chat room with the initial `serverUrl` and `roomId`. If either `serverUrl` or `roomId` change as a result of a commit (say, if the user picks a different chat room in a dropdown), your Effect will *disconnect from the previous room, and connect to the next one.* When the `ChatRoom` component is removed from the page, your Effect will disconnect one last time.
133
-
>>>>>>> 2da4f7fbd90ddc09835c9f85d61fd5644a271abc
115
+
Yukarıdaki `ChatRoom` bileşeni sayfaya eklendiğinde, başlangıçtaki `serverUrl` ve `roomId` ile chat odasına bağlanır. Eğer bir commit sonucunda `serverUrl` veya `roomId` değişirse (örneğin kullanıcı bir dropdown üzerinden farklı bir chat odası seçerse), Effect’iniz *önce önceki odadan bağlantıyı keser, ardından yeni odaya bağlanır.* `ChatRoom` bileşeni sayfadan kaldırıldığında ise Effect’iniz son bir kez daha bağlantıyı keser.
134
116
135
117
**Geliştirme sırasında [hataları bulmanıza yardımcı olmak](/learn/synchronizing-with-effects#step-3-add-cleanup-if-needed) için React, <CodeStep step={1}>kurulum</CodeStep> ve <CodeStep step={2}>temizleme</CodeStep> kodunu <CodeStep step={1}>kurulum</CodeStep>'dan önce son kez çalıştırır.** Bu, Effect mantığınızın doğru uygulandığını doğrulayan bir stres testidir. Bu, gözle görünür sorunlara neden oluyorsa, temizleme fonksiyonunuzda bazı mantık hataları vardır. Temizleme fonksiyonu, kurulum fonksiyonunun yaptığı her şeyi durdurmalı ya da geri almalıdır. Temel kural, kullanıcı bir kez çağrılan kurulum (son üründe olduğu gibi) ile *kurulum* → *temizleme* → *kurulum* sekansı (geliştirme sırasında olduğu gibi) arasındaki farkı ayırt etmemelidir. [Sık kullanılan çözümlere göz gezdirin.](/learn/synchronizing-with-effects#how-to-handle-the-effect-firing-twice-in-development)
136
118
@@ -1165,11 +1147,7 @@ useEffect(() => {
1165
1147
1166
1148
#### Bağımlılık dizisi iletme {/*passing-a-dependency-array*/}
1167
1149
1168
-
<<<<<<< HEAD
1169
-
Eğer bağımlılıkları belirtirseniz, Effect'iniz **ilk render'dan _ve_ değişen bağlımlılıklarla yeniden render'lardan sonra çalışacaktır.**
1170
-
=======
1171
-
If you specify the dependencies, your Effect runs **after the initial commit _and_ after commits with changed dependencies.**
1172
-
>>>>>>> 2da4f7fbd90ddc09835c9f85d61fd5644a271abc
1150
+
Eğer dependency’leri belirtirseniz, Effect’iniz **ilk commit’ten sonra _ve_ dependency’lerin değiştiği commit’lerden sonra** çalışır.
Eğer Effect'iniz render esnasında oluşturulan bir nesneye veya fonksiyona bağımlıysa, Effect çok sık çalışabilir. Örneğin bu Effect, `options` nesnesi [her render için farklı olduğundan](/learn/removing-effect-dependencies#does-some-reactive-value-change-unintentionally) her render'dan sonra yeniden sohbete bağlanır:
1517
-
=======
1518
-
If your Effect depends on an object or a function created during rendering, it might run too often. For example, this Effect re-connects after every commit because the `options` object is [different for every render:](/learn/removing-effect-dependencies#does-some-reactive-value-change-unintentionally)
1519
-
>>>>>>> 2da4f7fbd90ddc09835c9f85d61fd5644a271abc
1485
+
Eğer Effect’iniz render sırasında oluşturulan bir **object** veya **function**’a bağlıysa, gereğinden fazla çalışabilir. Örneğin, aşağıdaki Effect her commit’ten sonra yeniden bağlanır çünkü `options` objesi [her render’da farklıdır:](/learn/removing-effect-dependencies#does-some-reactive-value-change-unintentionally)
1520
1486
1521
1487
```js {6-9,12,15}
1522
1488
const serverUrl = 'https://localhost:1234';
@@ -1533,11 +1499,7 @@ function ChatRoom({ roomId }) {
1533
1499
constconnection=createConnection(options); // Effect içinde kullanılır
1534
1500
connection.connect();
1535
1501
return () =>connection.disconnect();
1536
-
<<<<<<<HEAD
1537
-
}, [options]); // 🚩 Bunun neticesinde, bu bağımlılıklar yeniden render'da her zaman farklıdır
1538
-
=======
1539
-
}, [options]); // 🚩 As a result, these dependencies are always different on a commit
1540
-
>>>>>>>2da4f7fbd90ddc09835c9f85d61fd5644a271abc
1502
+
}, [options]); // 🚩 Sonuç olarak, bu dependency’ler her commit’te her zaman farklıdır
1541
1503
// ...
1542
1504
```
1543
1505
@@ -1623,11 +1585,7 @@ Bu çözümle birlikte, input'a yazmak sohbete tekrar bağlanmayacaktır. Her re
Eğer Effect'iniz render esnasında oluşturulan bir nesneye veya fonksiyona bağımlıysa, Effect çok sık çalışabilir. Örneğin bu Effect, `createOptions` fonksiyonu [her render'da farklı olduğundan](/learn/removing-effect-dependencies#does-some-reactive-value-change-unintentionally) her render'dan sonra yeniden sohbete bağlanır:
1628
-
=======
1629
-
If your Effect depends on an object or a function created during rendering, it might run too often. For example, this Effect re-connects after every commit because the `createOptions` function is [different for every render:](/learn/removing-effect-dependencies#does-some-reactive-value-change-unintentionally)
1630
-
>>>>>>> 2da4f7fbd90ddc09835c9f85d61fd5644a271abc
1588
+
Eğer Effect’iniz render sırasında oluşturulan bir **object** veya **function**’a bağlıysa, gereğinden fazla çalışabilir. Örneğin, aşağıdaki Effect her commit’ten sonra yeniden bağlanır çünkü `createOptions` fonksiyonu [her render’da farklıdır:](/learn/removing-effect-dependencies#does-some-reactive-value-change-unintentionally)
1631
1589
1632
1590
```js {4-9,12,16}
1633
1591
functionChatRoom({ roomId }) {
@@ -1645,19 +1603,11 @@ function ChatRoom({ roomId }) {
1645
1603
constconnection=createConnection();
1646
1604
connection.connect();
1647
1605
return () =>connection.disconnect();
1648
-
<<<<<<<HEAD
1649
-
}, [createOptions]); // 🚩 Bunun neticesinde, bu bağımlılıklar yeniden render'da her zaman farklıdır
1650
-
// ...
1651
-
```
1652
-
1653
-
Her yeniden render'da sıfırdan bir fonksiyon oluşturmak kendi başına bir sorun değildir. Bunu optimize etmenize gerek yoktur. Ancak fonksiyonu Effect'inizin bağımlılığı olarak kullanırsanız, Effect'inizin her yeniden render'dan sonra yeniden çalışmasına neden olacaktır.
1654
-
=======
1655
-
}, [createOptions]); // 🚩 As a result, these dependencies are always different on a commit
1606
+
}, [createOptions]); // 🚩 Sonuç olarak, bu dependency’ler her commit’te her zaman farklıdır
1656
1607
// ...
1657
1608
```
1658
1609
1659
-
By itself, creating a function from scratch on every re-render is not a problem. You don't need to optimize that. However, if you use it as a dependency of your Effect, it will cause your Effect to re-run after every commit.
1660
-
>>>>>>> 2da4f7fbd90ddc09835c9f85d61fd5644a271abc
1610
+
Tek başına, her yeniden render’da sıfırdan bir **function** oluşturmak bir problem değildir. Bunu optimize etmeniz gerekmez. Ancak bu function’ı Effect’inizin bir **dependency**’si olarak kullanırsanız, Effect’inizin **her commit’ten sonra yeniden çalışmasına** neden olur.
1661
1611
1662
1612
Render esnasında oluşturulan bir fonksiyonu bağımlılık olarak kullanmaktan kaçının. Bunun yerine Effect içinde bildirin:
1663
1613
@@ -1827,11 +1777,7 @@ Bu, Effect mantığınızın doğru uygunlanıdığını doğrulayan bir stres t
1827
1777
```js {3}
1828
1778
useEffect(() => {
1829
1779
// ...
1830
-
<<<<<<<HEAD
1831
-
}); // 🚩 Bağımlılık dizisi yok: her yeniden render'dan sonra yeniden çalışır!
1832
-
=======
1833
-
}); // 🚩 No dependency array: re-runs after every commit!
1834
-
>>>>>>>2da4f7fbd90ddc09835c9f85d61fd5644a271abc
1780
+
}); // 🚩 Dependency array yok: her commit’ten sonra yeniden çalışır.
1835
1781
```
1836
1782
1837
1783
Bağımlılık dizisini belirttiyseniz ancak Effect'iniz hala döngüde yeniden çalışyorsa, bunun nedeni bağımlılıklarınızdan birinin her yeniden render'da farklı olmasıdır.
0 commit comments