Есть ли синтаксис ES6 для React-Router HOC/withRouter?
Есть ли способ использовать функцию ES6 extend
с компонентом React-Router "withRouter"?
Что-то вроде этого:
import { withRouter } from 'react-router';
export default class extends withRouter {
...
//Use react router history prop to navigate back a page.
handleSomeEvent() {
this.props.router.goBack();
}
...
}
Или я застрял, используя старый шаблон композиции?
var MyComponent = React.createClass({
...
});
export default withRouter(MyComponent);
Ответы
Ответ 1
Да, это легко, см. ниже (не говоря о том, что вы должны перенаправить 2-е после установки компонента... просто пример).
Кстати, моя версия реактивного маршрутизатора равна 2.6 (требуется 2.4+ для withRouter)
import React, { Component } from 'react';
import { withRouter } from 'react-router';
class MyComponent extends Component {
componentDidMount() {
setTimeout(() => {
this.props.router.push('my-url')
}, 2000);
}
render() {
return (
<div>My Component</div>
);
}
}
export default withRouter(MyComponent);
Ответ 2
Вы можете использовать его вот так.
@withRouter
export default class extends withRouter {
...
//Use react router history prop to navigate back a page.
handleSomeEvent() {
this.props.router.goBack();
}
...
}
Но вам нужно будет включить babel-plugin-transform-decorators-legacy