Это уже хорошо зарекомендовавший себя шаблон использования декоратора с реакцией для создания компонента более высокого порядка, например. реакция-редукс @connect. Поскольку декораторы не являются изобретением реакции или редукса, вы можете использовать их не только для создания HOC, но, например, для переопределения метода рендеринга. Его можно использовать, когда вы не хотите повторно запускать componentDidMount (например, если у вас есть вызов API).

export function loadingSpinner(propsFn) {
  return target => {
    const oldRender = target.prototype.render;
    target.prototype.render = function render(…args) {
      const isLoading = propsFn(this.props);
      if (isLoading) {
        return (<Spinner />);
      }
      return oldRender.apply(this, args);
    };
  };
}

А затем просто украсьте компонент, например:

@loadingSpinner(props => props.categories.loading)