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
*`element`: Argumen `element` harus merupakan elemen React yang valid. Misalnya, dapat berupa simpul JSX seperti `<Something />`, hasil dari pemanggilan [`createElement`](/reference/react/createElement), atau hasil dari pemanggilan `cloneElement` lainnya.
51
51
52
-
*`props`: Argumen `props` harus berupa objek atau `null`. Jika anda mengoper `null`, elemen yang di-kloning akan mempertahankan semua `element.props` yang orisinal. Sebaliknya, untuk setiap *prop* di objek `props`, elemen yang dikembalikan akan "memilih" nilai dari `props` daripada nilai dari `element.props`. Sisa *props* lainnya akan diisi dari `element.props` yang orisinal. Jika anda mengoper `props.key` atau `props.ref`, mereka akan menggantikan yang orisinal.
52
+
*`props`: Argumen `props` harus berupa objek atau `null`. Jika Anda mengoper `null`, elemen yang di-kloning akan mempertahankan semua `element.props` yang orisinal. Sebaliknya, untuk setiap *prop* di objek `props`, elemen yang dikembalikan akan "memilih" nilai dari `props` daripada nilai dari `element.props`. Sisa *props* lainnya akan diisi dari `element.props` yang orisinal. Jika Anda mengoper `props.key` atau `props.ref`, mereka akan menggantikan yang orisinal.
53
53
54
-
***opsional**`...children`: Nol atau lebih simpul anak. Bisa dari simpul React apa pun, termasuk elemen React, *string*, dan *number*. [*portal*](/reference/react-dom/createPortal), simpul kosong (`null`, `undefined`, `true`, dan `false`), dan senarai dari simpul-simpul React. Jika anda tidak mengoper argumen `...children` apa pun, `element.props.children` yang orisinal akan tetap dipertahankan.
54
+
***opsional**`...children`: Nol atau lebih simpul anak. Bisa dari simpul React apa pun, termasuk elemen React, *string*, dan *number*. [*portal*](/reference/react-dom/createPortal), simpul kosong (`null`, `undefined`, `true`, dan `false`), dan senarai dari simpul-simpul React. Jika Anda tidak mengoper argumen `...children` apa pun, `element.props.children` yang orisinal akan tetap dipertahankan.
55
55
56
56
#### Kembalian {/*returns*/}
57
57
58
58
`cloneElement` mengembalikan objek elemen React dengan beberapa properti:
59
59
60
60
*`type`: Sama seperti `element.type`.
61
-
*`props`: Hasil dari penggabungan dangkal antara `element.props` dengan `props` yang anda oper untuk menimpanya.
61
+
*`props`: Hasil dari penggabungan dangkal antara `element.props` dengan `props` yang Anda oper untuk menimpanya.
62
62
*`ref`: `element.ref` yang orisinal, kecuali telah ditimpa oleh `props.ref`.
63
63
*`key`: `element.key`, yang orisinal, kecuali telah ditimpa oleh `props.key`.
64
64
65
-
Biasanya, anda akan mengembalikan elemen dari sebuah komponen atau membuatnya sebagai anak dari elemen lain. Meskipun anda mungkin membaca properti elemen tersebut, sebaiknya anda memperlakukan setiap elemen sebagai objek tersembunyi setelah dibuat, dan hanya me-*render*-nya.
65
+
Biasanya, Anda akan mengembalikan elemen dari sebuah komponen atau membuatnya sebagai anak dari elemen lain. Meskipun Anda mungkin membaca properti elemen tersebut, sebaiknya Anda memperlakukan setiap elemen sebagai objek tersembunyi setelah dibuat, dan hanya me-*render*-nya.
66
66
67
67
#### Catatan penting {/*caveats*/}
68
68
69
69
* Mengkloning sebuah elemen **tidak mengubah elemen yang orisinal**.
70
70
71
-
* Sebaiknya anda hanya **mengoper *children* sebagai beberapa argumen ke `cloneElement` jika semuanya diketahui secara statis,** seperti `cloneElement(element, null, child1, child2, child3)`. Jika *children*anda dinamis, oper seluruh senarai sebagai argumen ketiga: `cloneElement(element, null, listItems)`. Ini memastikan bahwa React akan [memperingatkan anda tentang `key` yang hilang](/learn/rendering-lists#keeping-list-items-in-order-with-key) untuk setiap *list* dinamis. Untuk *list* statis hal tersebut tidak diperlukan karena tidak pernah diurutkan ulang.
71
+
* Sebaiknya Anda hanya **mengoper *children* sebagai beberapa argumen ke `cloneElement` jika semuanya diketahui secara statis,** seperti `cloneElement(element, null, child1, child2, child3)`. Jika *children*Anda dinamis, oper seluruh senarai sebagai argumen ketiga: `cloneElement(element, null, listItems)`. Ini memastikan bahwa React akan [memperingatkan Anda tentang `key` yang hilang](/learn/rendering-lists#keeping-list-items-in-order-with-key) untuk setiap *list* dinamis. Untuk *list* statis hal tersebut tidak diperlukan karena tidak pernah diurutkan ulang.
72
72
73
73
*`cloneElement` membuat pelacakan aliran data lebih sulit, jadi **cobalah beberapa [alternatif](#alternatives) sebagai gantinya.**
74
74
@@ -78,7 +78,7 @@ Biasanya, anda akan mengembalikan elemen dari sebuah komponen atau membuatnya se
78
78
79
79
### Menimpa props dari suatu elemen {/*overriding-props-of-an-element*/}
80
80
81
-
Untuk menimpa *prop* dari beberapa <CodeStepstep={1}>elemen React</CodeStep>, oper ke `cloneElement` dengan <CodeStepstep={2}>*props* yang ingin anda timpa</CodeStep>:
81
+
Untuk menimpa *prop* dari beberapa <CodeStepstep={1}>elemen React</CodeStep>, oper ke `cloneElement` dengan <CodeStepstep={2}>*props* yang ingin Anda timpa</CodeStep>:
*Prop* `renderItem` disebut "render prop" karena merupakan *prop* yang menentukan cara me-*render* sesuatu. Misalnya, anda dapat mengoper `renderItem` yang me-*render* `<Row>` dengan nilai `isHighlighted` yang diberikan:
262
+
*Prop* `renderItem` disebut "render prop" karena merupakan *prop* yang menentukan cara me-*render* sesuatu. Misalnya, Anda dapat mengoper `renderItem` yang me-*render* `<Row>` dengan nilai `isHighlighted` yang diberikan:
263
263
264
264
```js {3,7}
265
265
<List
@@ -293,7 +293,7 @@ Hasil akhirnya sama dengan `cloneElement`:
293
293
</List>
294
294
```
295
295
296
-
Namun, anda dapat dengan mudah melacak dari mana nilai `isHighlighted` berasal.
296
+
Namun, Anda dapat dengan mudah melacak dari mana nilai `isHighlighted` berasal.
297
297
298
298
<Sandpack>
299
299
@@ -397,7 +397,7 @@ Pola ini lebih anjurkan daripada `cloneElement` karena lebih eksplisit.
397
397
398
398
Alternatif lain untuk `cloneElement` adalah [mengoper data melalui *context*.](/learn/passing-data-deeply-with-context)
399
399
400
-
Sebagai contoh, anda dapat memanggil [`createContext`](/reference/react/createContext) untuk mendefinisikan `HighlightContext`:
400
+
Sebagai contoh, Anda dapat memanggil [`createContext`](/reference/react/createContext) untuk mendefinisikan `HighlightContext`:
401
401
402
402
```js
403
403
exportconstHighlightContext=createContext(false);
@@ -555,7 +555,7 @@ button {
555
555
556
556
### Mengekstraksi logika ke dalam Hook kustom {/*extracting-logic-into-a-custom-hook*/}
557
557
558
-
Pendekatan lain yang dapat anda coba adalah mengekstrak logika "non-visual" ke dalam Hook anda sendiri, dan menggunakan informasi yang dikembalikan oleh Hook anda untuk memutuskan apa yang akan di-*render*. Misalnya, anda dapat menulis Hook kustom `useList` seperti ini:
558
+
Pendekatan lain yang dapat Anda coba adalah mengekstrak logika "non-visual" ke dalam Hook Anda sendiri, dan menggunakan informasi yang dikembalikan oleh Hook Anda untuk memutuskan apa yang akan di-*render*. Misalnya, Anda dapat menulis Hook kustom `useList` seperti ini:
559
559
560
560
```js
561
561
import { useState } from'react';
@@ -574,7 +574,7 @@ export default function useList(items) {
574
574
}
575
575
```
576
576
577
-
Lalu anda dapat menggunakannya seperti ini:
577
+
Lalu Anda dapat menggunakannya seperti ini:
578
578
579
579
```js {2,9,13}
580
580
exportdefaultfunctionApp() {
@@ -597,7 +597,7 @@ export default function App() {
597
597
}
598
598
```
599
599
600
-
Aliran datanya eksplisit, tetapi *state* ada di dalam Hook kustom `useList` yang dapat anda gunakan dari komponen apa pun:
600
+
Aliran datanya eksplisit, tetapi *state* ada di dalam Hook kustom `useList` yang dapat Anda gunakan dari komponen apa pun:
601
601
602
602
<Sandpack>
603
603
@@ -690,4 +690,4 @@ button {
690
690
691
691
</Sandpack>
692
692
693
-
Pendekatan ini sangat berguna jika anda ingin menggunakan kembali logika ini di komponen yang berbeda.
693
+
Pendekatan ini sangat berguna jika Anda ingin menggunakan kembali logika ini di komponen yang berbeda.
0 commit comments