Use Decorators for React Higher Order Components
When working with React libraries that make use of higher order components, you wrap your component in a function:
import { withRouter } from 'react-router-dom';
class MyComponent extends Component {
...
}
export default withRouter(MyComponent)
When chaining through multiple HOC's, this can become unwieldly:
import { withRouter } from 'react-router-dom';
import { connect } from 'react-redux';
class MyComponent extends Component {
...
}
function mapStateToProps(state) { ... };
export default withRouter(connect(mapStateToProps)(MyComponent));
But there is hope, with the decorator syntax in ES6/Babel you can make this look a bit cleaner:
import { withRouter } from 'react-router-dom';
import { connect } from 'react-redux';
function mapStateToProps(state) { ... };
@withRouter
@connect(mapStateToProps)
export default class MyComponent extends Component {
...
}
Full documentation here.
Tweet