React Higher Order Components (HOCs) - Tuong-Nguyen/JavaScript-Structure GitHub Wiki

Definition

a higher-order component (HOC) refers to a function that accepts a single React component and returns a new React component.

const EnhancedComponent = hoc(BaseComponent)

Use Cases

  • Handle cross-cutting concerns (ex: logger)
  • Reuse component logic

Example

  • Create a HOC to upper case component's prop title
  • Create a HOC to cut the title if it exceeds a number of character, ex: if limit is 10, 'The title exceed 10` -> 'The title ...'
  • Combine 2 HOCs with compose() of recompose
export const makeUpperCase = (WrappedComponent) => {
  return (props) => {
    let title = props.title;
    const childProps = Object.assign({}, props, {
      title: title.toUpperCase()
    });

    return <WrappedComponent { ...childProps } />
  };
};
export const limitLetter = (limitLetter) => (WrappedComponent) => {
  return (props) => {
    let title = props.title;
    if (title.length > limitLetter) {
      title = title.substring(0, limitLetter) + '...';
    }
    const childProps = Object.assign({}, props, {
      title: title
    });

    return <WrappedComponent { ...childProps } />
  };
};
compose(makeUpperCase, limitLetter(10))(WordCard);