Skip to content

Commit 9ba1910

Browse files
committed
Update prefer-es6-class documentation
1 parent 712244f commit 9ba1910

File tree

2 files changed

+51
-19
lines changed

2 files changed

+51
-19
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ Finally, enable all of the rules that you would like to use.
129129
* [no-multi-comp](docs/rules/no-multi-comp.md): Prevent multiple component definition per file
130130
* [no-set-state](docs/rules/no-set-state.md): Prevent usage of `setState`
131131
* [no-unknown-property](docs/rules/no-unknown-property.md): Prevent usage of unknown DOM property
132-
* [prefer-es6-class](docs/rules/prefer-es6-class.md): Prefer es6 class instead of createClass for React Components
132+
* [prefer-es6-class](docs/rules/prefer-es6-class.md): Enforce ES5 or ES6 class for React Components
133133
* [prop-types](docs/rules/prop-types.md): Prevent missing props validation in a React component definition
134134
* [react-in-jsx-scope](docs/rules/react-in-jsx-scope.md): Prevent missing `React` when using JSX
135135
* [require-extension](docs/rules/require-extension.md): Restrict file extensions that may be required

docs/rules/prefer-es6-class.md

Lines changed: 50 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,59 @@
1-
ES6 class bodies are more terse than traditional object literals. Methods do not require a `function` keyword and no commas are needed to separate them. This refactoring looks as such:
1+
# Enforce ES5 or ES6 class for React Components (prefer-es6-class)
22

3-
Invalid:
3+
React offers you two way to create traditional components: using the ES5 `React.createClass` method or the new ES6 class system. This rule allow you to enforce one way or another.
4+
5+
## Rule Options
6+
7+
```js
8+
...
9+
"prefer-es6-class": [<enabled>, <mode>]
10+
...
11+
```
12+
13+
### `always` mode
14+
15+
Will enforce ES6 classes for React Components. This is the default mode.
16+
17+
The following patterns are considered warnings:
418

519
```js
6-
var ExampleComponent = React.createClass({
7-
render: function() {
8-
return <div onClick={this._handleClick}>Hello, world.</div>;
9-
},
10-
_handleClick: function() {
11-
console.log(this);
12-
}
20+
var Hello = React.createClass({
21+
render: function() {
22+
return <div>Hello {this.props.name}</div>;
23+
}
1324
});
1425
```
1526

16-
Valid:
27+
The following patterns are not considered warnings:
28+
29+
```js
30+
class Hello extends React.Component {
31+
render() {
32+
return <div>Hello {this.props.name}</div>;
33+
}
34+
}
35+
```
36+
37+
### `never` mode
38+
39+
Will enforce ES5 classes for React Components
40+
41+
The following patterns are considered warnings:
1742

1843
```js
19-
class ExampleComponent extends React.Component {
20-
render() {
21-
return <div onClick={this._handleClick}>Hello, world.</div>;
22-
}
23-
_handleClick() {
24-
console.log(this);
25-
}
44+
class Hello extends React.Component {
45+
render() {
46+
return <div>Hello {this.props.name}</div>;
47+
}
2648
}
27-
```
49+
```
50+
51+
The following patterns are not considered warnings:
52+
53+
```js
54+
var Hello = React.createClass({
55+
render: function() {
56+
return <div>Hello {this.props.name}</div>;
57+
}
58+
});
59+
```

0 commit comments

Comments
 (0)