Higher order components allow you to reuse logic between components. There’s also the idea of handling cross-cutting concerns between components, which seems to be the same idea of reuse.
What I seem to like about higher order components is how you can leave the original component unchanged and return a new component that composes additional behavior with the original component.
A good article