Skip to content

Commit

Permalink
Merge pull request airbnb#1302 from airbnb/mixins
Browse files Browse the repository at this point in the history
Add guidance around not using mixins
  • Loading branch information
lencioni authored Feb 14, 2017
2 parents 2448393 + 9ed4345 commit 2a1d198
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion react/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

## Class vs `React.createClass` vs stateless

- 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. eslint: [`react/prefer-es6-class`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-es6-class.md) [`react/prefer-stateless-function`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-stateless-function.md)
- If you have internal state and/or refs, prefer `class extends React.Component` over `React.createClass`. eslint: [`react/prefer-es6-class`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-es6-class.md) [`react/prefer-stateless-function`](https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-stateless-function.md)

```jsx
// bad
Expand Down Expand Up @@ -69,6 +69,12 @@
}
```
## Mixins
- [Do not use mixins](https://facebook.github.io/react/blog/2016/07/13/mixins-considered-harmful.html).
> Why? Mixins introduce implicit dependencies, cause name clashes, and cause snowballing complexity. Most use cases for mixins can be accomplished in better ways via components, higher-order components, or utility modules.
## Naming
- **Extensions**: Use `.jsx` extension for React components.
Expand Down

0 comments on commit 2a1d198

Please sign in to comment.