Исходя из логики, hoc - это измененный входной компонент и созданный на его основе новый при выполнении определенных условий и манипуляций или возврат иного компонента, если условие не проходит.
Пример простого хока
import React from 'react';
import { Redirect } from 'react-router-dom';
import PropTypes from 'prop-types';
import PageContainer from '../containers/page-title.container';
const PrivateRoute = ({ component: Component, ...rest }) => {
const { isAuth } = rest;
return (
<PageContainer
{...rest}
render={props =>
isAuth ? (
<Component {...props} {...rest} />
) : (
<Redirect
to={{
pathname: '/login',
state: { from: props.location },
}}
/>
)
}
/>
);
};
PrivateRoute.propTypes = {
component: PropTypes.func.isRequired,
location: PropTypes.object.isRequired,
};
export default PrivateRoute;