Skip to content

Commit 45834dd

Browse files
author
Juan Lulkin
committed
Favour stateless functions over classes when there's no state
1 parent aa6a20e commit 45834dd

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

react/README.md

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
## Table of Contents
66

77
1. [Basic Rules](#basic-rules)
8-
1. [Class vs `React.createClass`](#class-vs-reactcreateclass)
8+
1. [Class vs `React.createClass` vs stateless](#class-vs-reactcreateclass-vs-stateless)
99
1. [Naming](#naming)
1010
1. [Declaration](#declaration)
1111
1. [Alignment](#alignment)
@@ -27,25 +27,44 @@
2727

2828
## Class vs `React.createClass`
2929

30-
- Use `class extends React.Component` unless you have a very good reason to use mixins.
30+
- If you have internal state and/or refs, prefer `class extends React.Component` over `React.createClass` unless you have a very good reason to use mixins.
3131

3232
eslint rules: [`react/prefer-es6-class`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-es6-class.md).
3333

3434
```javascript
3535
// bad
3636
const Listing = React.createClass({
37-
render() {
38-
return <div />;
37+
// ...
38+
render: function() {
39+
return <div>{ this.state.hello }</div>;
3940
}
4041
});
4142

4243
// good
4344
class Listing extends React.Component {
45+
// ...
4446
render() {
45-
return <div />;
47+
return <div>{ this.state.hello }</div>;
4648
}
4749
}
4850
```
51+
52+
And if you don't have state or refs, prefer functions over classes:
53+
54+
```javascript
55+
56+
// bad
57+
class Listing extends React.Component {
58+
render() {
59+
return <div>{ this.props.hello }</div>;
60+
}
61+
}
62+
63+
// good
64+
function Listing({ hello }){
65+
return <div>{ hello }</div>;
66+
}
67+
```
4968
5069
## Naming
5170

0 commit comments

Comments
 (0)