Посмотрите на исходный код...
Функция dispatch будет возвращать ссылку на саму async функцию и в await перед dispatch'ем нет ни какого смысла.
Actions must be plain objects. Use custom middleware for async actions.
мы ведь говорим о недостатках родных классов
И кивать на договоренности 20-летней давности относительно языка, написанного для легкого кода в условиях, когда требуются инструменты для написания сложного кода - так себе аргумент.
А если это тот редкий случай, когда пишется действительно сложный фронт?
class SomeComponent extends Component {
}
но вы ведь необходимость интерфейсов в ошибку проектирования не станете записывать? Или станете?
использование интерфейсов
использование приватных свойств
множественное наследование
class PrivateRoute extends React.Component {
render() {
const { isAuthenticated, component: Component, ...rest } = this.props;
return (
<Route {...rest} render={(Rouprops) => (
isAuthenticated === true
? <Component {...props} />
: <Redirect to='/login' />
)} />
);
}
}
const mapStateToProps = state => ({
isAuthenticated: state.user.isAuthenticated,
});
export default connect(mapStateToProps)(PrivateRoute);
export default someHOC(SomeComponent);
<PrivateRoute path="/somePath" component={SomeComponent} />;
const PrivateRoute = ({ isAuthenticated, component: Component, ...rest }) => (
<Route {...rest} render={(Rouprops) => (
isAuthenticated === true
? <Component {...props} />
: <Redirect to='/login' />
)} />
);
const mapStateToProps = state => ({
isAuthenticated: state.user.isAuthenticated,
});
export default connect(mapStateToProps)(PrivateRoute);