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
With functions and ES6 classes `defaultProps`is defined as a property on the component itself:
33
+
Dengan kelas dan fungsi ES6, `defaultProps`didefinisikan sebagai properti komponennya sendiri:
34
34
35
35
```javascript
36
36
classGreetingextendsReact.Component {
37
37
// ...
38
38
}
39
39
40
40
Greeting.defaultProps= {
41
-
name:'Mary'
41
+
name:'Maria'
42
42
};
43
43
```
44
44
45
-
With`createReactClass()`, you need to define `getDefaultProps()`as a function on the passed object:
45
+
Dengan`createReactClass()`, Anda harus mendefinisikan `getDefaultProps()`sebagai fungsi pada objek yang dioperkan:
46
46
47
47
```javascript
48
48
var Greeting =createReactClass({
49
49
getDefaultProps:function() {
50
50
return {
51
-
name:'Mary'
51
+
name:'Maria'
52
52
};
53
53
},
54
54
@@ -57,9 +57,9 @@ var Greeting = createReactClass({
57
57
});
58
58
```
59
59
60
-
## Setting the Initial State {#setting-the-initial-state}
60
+
## Menyetel *State* Awal {#setting-the-initial-state}
61
61
62
-
In ES6 classes, you can define the initial state by assigning `this.state`in the constructor:
62
+
Pada kelas ES6, Anda bisa mendefinisikan *state* awal dengan menetapkan `this.state`pada konstruktor:
63
63
64
64
```javascript
65
65
classCounterextendsReact.Component {
@@ -71,7 +71,7 @@ class Counter extends React.Component {
71
71
}
72
72
```
73
73
74
-
With`createReactClass()`, you have to provide a separate `getInitialState`method that returns the initial state:
74
+
Dengan`createReactClass()`, Anda harus menyediakan *method*`getInitialState`terpisah yang mengembalikan *state* awal:
75
75
76
76
```javascript
77
77
var Counter =createReactClass({
@@ -82,16 +82,16 @@ var Counter = createReactClass({
82
82
});
83
83
```
84
84
85
-
## Autobinding {#autobinding}
85
+
## *Autobinding* {#autobinding}
86
86
87
-
In React components declared as ES6 classes, methods follow the same semantics as regular ES6 classes. This means that they don't automatically bind `this`to the instance. You'll have to explicitly use`.bind(this)`in the constructor:
87
+
Pada komponen React yang dideklarasikan sebagai kelas ES6, *method* mengikuti semantik yang sama seperti kelas ES6 reguler. Ini berarti *method* tersebut tidak secara otomatis mem-*bind*`this`kepada instans. Anda harus secara eksplisit menggunakan`.bind(this)`pada konstruktor:
88
88
89
89
```javascript
90
90
classSayHelloextendsReact.Component {
91
91
constructor(props) {
92
92
super(props);
93
-
this.state= {message:'Hello!'};
94
-
//This line is important!
93
+
this.state= {message:'Halo!'};
94
+
//Baris berikut penting!
95
95
this.handleClick=this.handleClick.bind(this);
96
96
}
97
97
@@ -100,22 +100,23 @@ class SayHello extends React.Component {
100
100
}
101
101
102
102
render() {
103
-
// Because `this.handleClick` is bound, we can use it as an event handler.
103
+
// Karena `this.handleClick` telah di-bind, kita bisa menggunakannya
104
+
// sebagai event handler.
104
105
return (
105
106
<button onClick={this.handleClick}>
106
-
Say hello
107
+
Ucapkan halo
107
108
</button>
108
109
);
109
110
}
110
111
}
111
112
```
112
113
113
-
With`createReactClass()`, this is not necessary because it binds all methods:
114
+
Dengan`createReactClass()`, hal tersebut tidak diperlukan karena semua *method* akan di-*bind*:
114
115
115
116
```javascript
116
117
var SayHello =createReactClass({
117
118
getInitialState:function() {
118
-
return {message:'Hello!'};
119
+
return {message:'Halo!'};
119
120
},
120
121
121
122
handleClick:function() {
@@ -125,61 +126,61 @@ var SayHello = createReactClass({
125
126
render:function() {
126
127
return (
127
128
<button onClick={this.handleClick}>
128
-
Say hello
129
+
Ucapkan halo
129
130
</button>
130
131
);
131
132
}
132
133
});
133
134
```
134
135
135
-
This means writing ES6 classes comes with a little more boilerplate code for event handlers, but the upside is slightly better performance in large applications.
136
+
Ini berarti penulisan dengan kelas ES6 disertai dengan kode *boilerplate* untuk *event handler* tetapi manfaatnya adalah kinerja yang sedikit lebih baik dalam aplikasi yang besar.
136
137
137
-
If the boilerplate code is too unattractive to you, you may enable the **experimental**[Class Properties](https://babeljs.io/docs/plugins/transform-class-properties/)syntax proposal with Babel:
138
+
Jika kode *boilerplate* sangat tidak menarik bagi Anda, Anda bisa mengaktifkan sintaksis [*Class Property*](https://babeljs.io/docs/plugins/transform-class-properties/)yang bersifat **eksperimental** dengan Babel:
138
139
139
140
140
141
```javascript
141
142
classSayHelloextendsReact.Component {
142
143
constructor(props) {
143
144
super(props);
144
-
this.state= {message:'Hello!'};
145
+
this.state= {message:'Halo!'};
145
146
}
146
-
//WARNING: this syntax is experimental!
147
-
//Using an arrow here binds the method:
147
+
//PERINGATAN: sintalsis ini bersifat eksperimental!
148
+
//Menggunakan *arrow* akan mem-bind method:
148
149
handleClick= () => {
149
150
alert(this.state.message);
150
151
}
151
152
152
153
render() {
153
154
return (
154
155
<button onClick={this.handleClick}>
155
-
Say hello
156
+
Ucapkan halo
156
157
</button>
157
158
);
158
159
}
159
160
}
160
161
```
161
162
162
-
Please note that the syntax above is **experimental**and the syntax may change, or the proposal might not make it into the language.
163
+
Perhatikan bahwa sintaksis di atas bersifat **eksperimental**dan sintaksis mungkin akan berubah, atau proposal ini tidak akan disertakan dalam bahasa.
163
164
164
-
If you'd rather play it safe, you have a few options:
165
+
Jika Anda ingin bermain pada area yang aman, Anda memiliki beberapa opsi:
>ES6 launched without any mixin support. Therefore, there is no support for mixins when you use React with ES6 classes.
175
+
>ES6 diluncurkan tanpa adanya dukungan *mixin*. Oleh sebab itu, tidak ada dukungan untuk *mixin* saat Anda menggunakan React dengan kelas ES6.
175
176
>
176
-
>**We also found numerous issues in codebases using mixins, [and don't recommend using them in the new code](/blog/2016/07/13/mixins-considered-harmful.html).**
177
+
>**Kami juga menemukan banyak masalah pada kode dasar yang menggunakan *mixin*, [dan tidak menyarankan untuk menggunakannya untuk kode yang baru](/blog/2016/07/13/mixins-considered-harmful.html).**
177
178
>
178
-
>This section exists only for the reference.
179
+
>Bagian berikut hanya digunakan untuk rujukan.
179
180
180
-
Sometimes very different components may share some common functionality. These are sometimes called [cross-cutting concerns](https://en.wikipedia.org/wiki/Cross-cutting_concern). `createReactClass`lets you use a legacy `mixins` system for that.
181
+
Terkadang komponen yang sangat berbeda bisa berbagi fungsionalitas yang sama. Hal ini terkadang disebut sebagai [*cross-cutting concern*](https://en.wikipedia.org/wiki/Cross-cutting_concern). `createReactClass`memungkinkan Anda untuk menggunakan sistem `mixin` yang bersifat *legacy* untuk hal tersebut.
181
182
182
-
One common use case is a component wanting to update itself on a time interval. It's easy to use`setInterval()`, but it's important to cancel your interval when you don't need it anymore to save memory. React provides [lifecycle methods](/docs/react-component.html#the-component-lifecycle)that let you know when a component is about to be created or destroyed. Let's create a simple mixin that uses these methods to provide an easy `setInterval()`function that will automatically get cleaned up when your component is destroyed.
183
+
Salah satu kasus penggunaan yang umum adalah sebuah komponen ingin memperbarui dirinya sendiri secara periodik. Sangat mudah untuk menggunakan`setInterval()`, tetapi sangat penting untuk membatalkan interval jika Anda tidak membutuhkannya lagi untuk menghemat memori. React menyediakan [*lifecycle method*](/docs/react-component.html#the-component-lifecycle)yang bisa memberi tahu Anda kapan komponen akan diciptakan atau dihancurkan. Sebagai contoh, mari kita buat *mixin* yang sederhana yang menggunakan *method* berikut untuk menyediakan fungsi `setInterval()`yang mudah, yang akan dibersihkan secara otomatis ketika komponen Anda dihancurkan.
183
184
184
185
```javascript
185
186
var SetIntervalMixin = {
@@ -197,20 +198,20 @@ var SetIntervalMixin = {
197
198
var createReactClass =require('create-react-class');
198
199
199
200
var TickTock =createReactClass({
200
-
mixins: [SetIntervalMixin], //Use the mixin
201
+
mixins: [SetIntervalMixin], //Gunakan mixin
201
202
getInitialState:function() {
202
203
return {seconds:0};
203
204
},
204
205
componentDidMount:function() {
205
-
this.setInterval(this.tick, 1000); //Call a method on the mixin
206
+
this.setInterval(this.tick, 1000); //Panggil method pada mixin
206
207
},
207
208
tick:function() {
208
209
this.setState({seconds:this.state.seconds+1});
209
210
},
210
211
render:function() {
211
212
return (
212
213
<p>
213
-
React has been running for{this.state.seconds} seconds.
214
+
React telah berjalan selama {this.state.seconds} detik.
214
215
</p>
215
216
);
216
217
}
@@ -222,4 +223,4 @@ ReactDOM.render(
222
223
);
223
224
```
224
225
225
-
If a component is using multiple mixins and several mixins define the same lifecycle method (i.e. several mixins want to do some cleanup when the component is destroyed), all of the lifecycle methods are guaranteed to be called. Methods defined on mixins run in the order mixins were listed, followed by a method call on the component.
226
+
Jika komponen menggunakan beberapa *mixin* dan beberapa *mixin* mendefinisikan *lifecycle method* yang sama (beberapa *mixin* ingin melakukan pembersihan ketika komponen dihancurkan), semua *lifecycle method* dijamin untuk dipanggil. *Method* yang didefiniskan pada *mixin* dijalankan secara berurutan sesuai dengan dengan proses pendaftarannya, diikuti dengan pemanggilan *method* pada komponen.
0 commit comments