Skip to content

Commit 0c5b273

Browse files
authored
Merge pull request #695 from reactjs/translate-cloneElement-page
Translate clone element page
2 parents 83b9315 + fe3fcae commit 0c5b273

File tree

1 file changed

+50
-51
lines changed

1 file changed

+50
-51
lines changed

src/content/reference/react/cloneElement.md

Lines changed: 50 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ title: cloneElement
44

55
<Pitfall>
66

7-
Using `cloneElement` is uncommon and can lead to fragile code. [See common alternatives.](#alternatives)
7+
`cloneElement` kullanımı yaygın değildir ve kırılgan kodlara yol açabilir. [Yaygın alternatiflere göz atın.](#alternatives)
88

99
</Pitfall>
1010

1111
<Intro>
1212

13-
`cloneElement` lets you create a new React element using another element as a starting point.
13+
`cloneElement`, başka bir elementi başlangıç noktası olarak kullanarak yeni bir React elementi oluşturmanıza olanak tanır.
1414

1515
```js
1616
const clonedElement = cloneElement(element, props, ...children)
@@ -22,11 +22,11 @@ const clonedElement = cloneElement(element, props, ...children)
2222

2323
---
2424

25-
## Reference {/*reference*/}
25+
## Referans {/*reference*/}
2626

2727
### `cloneElement(element, props, ...children)` {/*cloneelement*/}
2828

29-
Call `cloneElement` to create a React element based on the `element`, but with different `props` and `children`:
29+
`element` temel alınarak ancak farklı `props` ve `children` ile bir React elementi oluşturmak için `cloneElement` fonksiyonunu çağırın:
3030

3131
```js
3232
import { cloneElement } from 'react';
@@ -43,42 +43,42 @@ const clonedElement = cloneElement(
4343
console.log(clonedElement); // <Row title="Cabbage" isHighlighted={true}>Goodbye</Row>
4444
```
4545

46-
[See more examples below.](#usage)
46+
[Daha fazla örneği aşağıda inceleyin.](#usage)
4747

48-
#### Parameters {/*parameters*/}
48+
#### Parametreler {/*parameters*/}
4949

50-
* `element`: The `element` argument must be a valid React element. For example, it could be a JSX node like `<Something />`, the result of calling [`createElement`](/reference/react/createElement), or the result of another `cloneElement` call.
50+
* `element`: `element` argümanı geçerli bir React elementi olmalıdır. Örneğin `<Something />` gibi bir JSX node’u, [`createElement`](/reference/react/createElement) çağrısının sonucu veya başka bir `cloneElement` çağrısının sonucu olabilir.
5151

52-
* `props`: The `props` argument must either be an object or `null`. If you pass `null`, the cloned element will retain all of the original `element.props`. Otherwise, for every prop in the `props` object, the returned element will "prefer" the value from `props` over the value from `element.props`. The rest of the props will be filled from the original `element.props`. If you pass `props.key` or `props.ref`, they will replace the original ones.
52+
* `props`: `props` argümanı bir obje veya `null` olmalıdır. Eğer `null` geçirirseniz, clone edilen element orijinal `element.props` değerlerini korur. Aksi takdirde, `props` objesindeki her prop için dönen element, `element.props` yerine `props` içindeki değeri "tercih eder". Geri kalan prop’lar orijinal `element.props`’tan doldurulur. Eğer `props.key` veya `props.ref` geçirirseniz, bunlar orijinal değerlerin yerini alır.
5353

54-
* **optional** `...children`: Zero or more child nodes. They can be any React nodes, including React elements, strings, numbers, [portals](/reference/react-dom/createPortal), empty nodes (`null`, `undefined`, `true`, and `false`), and arrays of React nodes. If you don't pass any `...children` arguments, the original `element.props.children` will be preserved.
54+
* **opsiyonel** `...children`: Sıfır veya daha fazla child node. Bunlar React element’leri, string’ler, sayılar, [portals](/reference/react-dom/createPortal), boş node’lar (`null`, `undefined`, `true`, `false`) ve React node dizileri dahil olmak üzere herhangi bir React node olabilir. Eğer herhangi bir `...children` argümanı geçmezseniz, orijinal `element.props.children` korunur.
5555

5656
#### Returns {/*returns*/}
5757

58-
`cloneElement` returns a React element object with a few properties:
58+
`cloneElement`, birkaç özelliğe sahip bir React element objesi döndürür:
5959

60-
* `type`: Same as `element.type`.
61-
* `props`: The result of shallowly merging `element.props` with the overriding `props` you have passed.
62-
* `ref`: The original `element.ref`, unless it was overridden by `props.ref`.
63-
* `key`: The original `element.key`, unless it was overridden by `props.key`.
60+
* `type`: `element.type` ile aynıdır.
61+
* `props`: `element.props` ile verdiğiniz override `props`’un shallow merge edilmesi sonucu oluşur.
62+
* `ref`: `props.ref` ile override edilmediyse, orijinal `element.ref`.
63+
* `key`: `props.key` ile override edilmediyse, orijinal `element.key`.
6464

65-
Usually, you'll return the element from your component or make it a child of another element. Although you may read the element's properties, it's best to treat every element as opaque after it's created, and only render it.
65+
Genellikle, bu elementi component’inizden döndürür veya başka bir elementin child’ı olarak kullanırsınız. Element’in özelliklerini okuyabilseniz de, oluşturulduktan sonra her elementi opaque (iç yapısı bilinmeyen) olarak ele almak ve sadece render etmek en iyisidir.
6666

67-
#### Caveats {/*caveats*/}
67+
#### Uyarılar {/*caveats*/}
6868

69-
* Cloning an element **does not modify the original element.**
69+
* Bir elementi clone etmek **orijinal elementi değiştirmez.**
7070

71-
* You should only **pass children as multiple arguments to `cloneElement` if they are all statically known,** like `cloneElement(element, null, child1, child2, child3)`. If your children are dynamic, pass the entire array as the third argument: `cloneElement(element, null, listItems)`. This ensures that React will [warn you about missing `key`s](/learn/rendering-lists#keeping-list-items-in-order-with-key) for any dynamic lists. For static lists this is not necessary because they never reorder.
71+
* `children`’ları `cloneElement`’e yalnızca **tamamı statik olarak biliniyorsa çoklu argümanlar şeklinde geçmelisiniz,** örneğin `cloneElement(element, null, child1, child2, child3)`. Eğer `children` dinamik ise, tüm diziyi üçüncü argüman olarak geçin: `cloneElement(element, null, listItems)`. Bu, React’in dinamik listeler için [eksik `key` uyarısı vermesini](/learn/rendering-lists#keeping-list-items-in-order-with-key) sağlar. Statik listeler için bu gerekli değildir çünkü yeniden sıralanmazlar.
7272

73-
* `cloneElement` makes it harder to trace the data flow, so **try the [alternatives](#alternatives) instead.**
73+
* `cloneElement`, veri akışını takip etmeyi zorlaştırır, bu yüzden **bunun yerine [alternatifleri](#alternatives) kullanmayı deneyin.**
7474

7575
---
7676

77-
## Usage {/*usage*/}
77+
## Kullanım {/*usage*/}
7878

79-
### Overriding props of an element {/*overriding-props-of-an-element*/}
79+
### Bir öğenin özelliklerini geçersiz kılma {/*overriding-props-of-an-element*/}
8080

81-
To override the props of some <CodeStep step={1}>React element</CodeStep>, pass it to `cloneElement` with the <CodeStep step={2}>props you want to override</CodeStep>:
81+
Bazı <CodeStep step={1}>React element</CodeStep> prop’larını override etmek için, onu `cloneElement`’e <CodeStep step={2}>override etmek istediğiniz props</CodeStep> ile geçirin:
8282

8383
```js [[1, 5, "<Row title=\\"Cabbage\\" />"], [2, 6, "{ isHighlighted: true }"], [3, 4, "clonedElement"]]
8484
import { cloneElement } from 'react';
@@ -90,11 +90,11 @@ const clonedElement = cloneElement(
9090
);
9191
```
9292

93-
Here, the resulting <CodeStep step={3}>cloned element</CodeStep> will be `<Row title="Cabbage" isHighlighted={true} />`.
93+
Burada, ortaya çıkan <CodeStep step={3}>cloned element</CodeStep> `<Row title="Cabbage" isHighlighted={true} />` olacaktır.
9494

95-
**Let's walk through an example to see when it's useful.**
95+
**Ne zaman kullanışlı olduğunu görmek için bir örnek üzerinden gidelim.**
9696

97-
Imagine a `List` component that renders its [`children`](/learn/passing-props-to-a-component#passing-jsx-as-children) as a list of selectable rows with a "Next" button that changes which row is selected. The `List` component needs to render the selected `Row` differently, so it clones every `<Row>` child that it has received, and adds an extra `isHighlighted: true` or `isHighlighted: false` prop:
97+
Bir `List` component’ini düşünün; bu component [`children`](/learn/passing-props-to-a-component#passing-jsx-as-children) öğelerini, seçilebilir satırlar listesi olarak render eder ve hangi satırın seçili olduğunu değiştiren bir "Next" butonu vardır. `List` component’i seçili `Row`’u farklı render etmesi gerektiğinden, aldığı her `<Row>` child’ını clone eder ve ekstra bir `isHighlighted: true` veya `isHighlighted: false` prop’u ekler:
9898

9999
```js {6-8}
100100
export default function List({ children }) {
@@ -108,7 +108,7 @@ export default function List({ children }) {
108108
)}
109109
```
110110
111-
Let's say the original JSX received by `List` looks like this:
111+
Diyelim ki `List`’in aldığı orijinal JSX şöyle görünüyor:
112112
113113
```js {2-4}
114114
<List>
@@ -118,7 +118,7 @@ Let's say the original JSX received by `List` looks like this:
118118
</List>
119119
```
120120
121-
By cloning its children, the `List` can pass extra information to every `Row` inside. The result looks like this:
121+
Children’larını clone ederek, `List` her bir `Row`’a ekstra bilgi geçirebilir. Sonuç şöyle görünür:
122122
123123
```js {4,8,12}
124124
<List>
@@ -137,7 +137,7 @@ By cloning its children, the `List` can pass extra information to every `Row` in
137137
</List>
138138
```
139139
140-
Notice how pressing "Next" updates the state of the `List`, and highlights a different row:
140+
“Next” butonuna basıldığında `List`’in state’inin nasıl güncellendiğine ve farklı bir satırın highlight edildiğine dikkat edin:
141141
142142
<Sandpack>
143143
@@ -232,21 +232,21 @@ button {
232232
233233
</Sandpack>
234234
235-
To summarize, the `List` cloned the `<Row />` elements it received and added an extra prop to them.
235+
Özetle, `List` aldığı `<Row />` elementlerini clone etti ve bunlara ekstra bir prop ekledi.
236236
237237
<Pitfall>
238238
239-
Cloning children makes it hard to tell how the data flows through your app. Try one of the [alternatives.](#alternatives)
239+
Children’ları clone etmek, veri akışının uygulamanızda nasıl ilerlediğini anlamayı zorlaştırır. [Alternatiflerden](#alternatives) birini denemeyi deneyin.
240240
241241
</Pitfall>
242242
243243
---
244244
245-
## Alternatives {/*alternatives*/}
245+
## Alternatifler {/*alternatives*/}
246246
247-
### Passing data with a render prop {/*passing-data-with-a-render-prop*/}
247+
### Render prop ile veri aktarımı {/*passing-data-with-a-render-prop*/}
248248
249-
Instead of using `cloneElement`, consider accepting a *render prop* like `renderItem`. Here, `List` receives `renderItem` as a prop. `List` calls `renderItem` for every item and passes `isHighlighted` as an argument:
249+
`cloneElement` kullanmak yerine, `renderItem` gibi bir *render prop* kabul etmeyi düşünebilirsiniz. Burada `List`, `renderItem`’ı bir prop olarak alır. `List`, her item için `renderItem`’ı çağırır ve `isHighlighted`’ı bir argüman olarak geçirir:
250250
251251
```js {1,7}
252252
export default function List({ items, renderItem }) {
@@ -259,7 +259,7 @@ export default function List({ items, renderItem }) {
259259
})}
260260
```
261261
262-
The `renderItem` prop is called a "render prop" because it's a prop that specifies how to render something. For example, you can pass a `renderItem` implementation that renders a `<Row>` with the given `isHighlighted` value:
262+
`renderItem` prop’una "render prop" denir çünkü bir şeyin nasıl render edileceğini belirten bir prop’tur. Örneğin, verilen `isHighlighted` değeri ile bir `<Row>` render eden bir `renderItem` implementasyonu geçebilirsiniz:
263263
264264
```js {3,7}
265265
<List
@@ -274,7 +274,7 @@ The `renderItem` prop is called a "render prop" because it's a prop that specifi
274274
/>
275275
```
276276
277-
The end result is the same as with `cloneElement`:
277+
Sonuç, `cloneElement` kullanımıyla elde edilen ile aynıdır:
278278
279279
```js {4,8,12}
280280
<List>
@@ -293,7 +293,7 @@ The end result is the same as with `cloneElement`:
293293
</List>
294294
```
295295
296-
However, you can clearly trace where the `isHighlighted` value is coming from.
296+
Ancak, `isHighlighted` değerinin nereden geldiğini açıkça takip edebilirsiniz.
297297
298298
<Sandpack>
299299
@@ -389,22 +389,21 @@ button {
389389
390390
</Sandpack>
391391
392-
This pattern is preferred to `cloneElement` because it is more explicit.
392+
Bu desen, `cloneElement`’e göre tercih edilir çünkü daha açıktır.
393393
394394
---
395395
396-
### Passing data through context {/*passing-data-through-context*/}
396+
### Veriyi context üzerinden geçirmek {/*passing-data-through-context*/}
397397
398-
Another alternative to `cloneElement` is to [pass data through context.](/learn/passing-data-deeply-with-context)
398+
`cloneElement`’e bir diğer alternatif ise veriyi [context üzerinden geçirmektir.](/learn/passing-data-deeply-with-context)
399399
400-
401-
For example, you can call [`createContext`](/reference/react/createContext) to define a `HighlightContext`:
400+
Örneğin, bir `HighlightContext` tanımlamak için [`createContext`](/reference/react/createContext) çağırabilirsiniz:
402401
403402
```js
404403
export const HighlightContext = createContext(false);
405404
```
406405
407-
Your `List` component can wrap every item it renders into a `HighlightContext` provider:
406+
`List` bileşeniniz, render ettiği her bir öğeyi bir `HighlightContext` sağlayıcısı içine sarabilir:
408407
409408
```js {8,10}
410409
export default function List({ items, renderItem }) {
@@ -421,15 +420,15 @@ export default function List({ items, renderItem }) {
421420
})}
422421
```
423422
424-
With this approach, `Row` does not need to receive an `isHighlighted` prop at all. Instead, it reads the context:
423+
Bu yaklaşımla, `Row` bileşeninin artık bir `isHighlighted` prop’u almasına gerek yoktur. Bunun yerine, context’i okur:
425424
426425
```js src/Row.js {2}
427426
export default function Row({ title }) {
428427
const isHighlighted = useContext(HighlightContext);
429428
// ...
430429
```
431430
432-
This allows the calling component to not know or worry about passing `isHighlighted` to `<Row>`:
431+
Bu, çağıran bileşenin `<Row>` bileşenine `isHighlighted` prop’unu geçmek zorunda kalmamasını ve bununla ilgilenmemesini sağlar:
433432
434433
```js {4}
435434
<List
@@ -440,7 +439,7 @@ This allows the calling component to not know or worry about passing `isHighligh
440439
/>
441440
```
442441
443-
Instead, `List` and `Row` coordinate the highlighting logic through context.
442+
Bunun yerine, `List` ve `Row`, highlight (vurgulama) mantığını context üzerinden koordine eder:
444443
445444
<Sandpack>
446445
@@ -550,13 +549,13 @@ button {
550549
551550
</Sandpack>
552551
553-
[Learn more about passing data through context.](/reference/react/useContext#passing-data-deeply-into-the-tree)
552+
[Context aracılığıyla veri aktarma hakkında daha fazla bilgi edinin.](/reference/react/useContext#passing-data-deeply-into-the-tree)
554553
555554
---
556555
557-
### Extracting logic into a custom Hook {/*extracting-logic-into-a-custom-hook*/}
556+
### Mantığı özel bir Hook içine çıkarma {/*extracting-logic-into-a-custom-hook*/}
558557
559-
Another approach you can try is to extract the "non-visual" logic into your own Hook, and use the information returned by your Hook to decide what to render. For example, you could write a `useList` custom Hook like this:
558+
Deneyebileceğiniz bir diğer yaklaşım, "görsel olmayan" mantığı kendi Hook’unuza çıkarmak ve Hook’unuzun döndürdüğü bilgilere göre neyin render edileceğine karar vermektir. Örneğin, aşağıdaki gibi bir `useList` özel Hook’u yazabilirsiniz:
560559
561560
```js
562561
import { useState } from 'react';
@@ -575,7 +574,7 @@ export default function useList(items) {
575574
}
576575
```
577576
578-
Then you could use it like this:
577+
Ardından bunu şu şekilde kullanabilirsiniz:
579578
580579
```js {2,9,13}
581580
export default function App() {
@@ -598,7 +597,7 @@ export default function App() {
598597
}
599598
```
600599
601-
The data flow is explicit, but the state is inside the `useList` custom Hook that you can use from any component:
600+
Veri akışı nettir (explicit), ancak state `useList` custom Hook’unun içindedir ve bunu herhangi bir bileşenden kullanabilirsiniz:
602601
603602
<Sandpack>
604603
@@ -691,4 +690,4 @@ button {
691690
692691
</Sandpack>
693692
694-
This approach is particularly useful if you want to reuse this logic between different components.
693+
Bu yaklaşım, bu mantığı farklı bileşenler arasında yeniden kullanmak istediğiniz durumlarda özellikle faydalıdır.

0 commit comments

Comments
 (0)