
예시 코드
디자인 시스템을 위해 컴포넌트가 얼마나 사용되는지 기록을 남기고 모니터링하고자 한다.
// Header 컴포넌트
class Header extends React.Component {
  componentDidMount() {
    // 로깅
    console.log(`[Header] 마운트`)
  }
  render() {
    return <header>Header</header>
  }
}
// Button 컴포넌트
class Button extends React.Component {
  componentDidMount() {
    // 로깅
    console.log(`[Button] 마운트`)
  }
  handleClick = () => {
    // 로깅
    console.log(`[Button] 클릭`)
  }
  render() {
    return <button onClick={this.handleClick}>클릭</button>
  }
}
위 코드는 두가지 문제점이 있다.
with이름(InputComponent, 그밖에 인자들...)작성한다.
OutputComponent)를 반환한다.OuputComponent)를 생성한다.
inputComponent에 추가한다.OuputComponent의 render메서드에서 inputComponent를 반환한다.function withMountEvent(InputComponent, componentName){ // 필요한 매개변수는 추가하기
  return (
    // 반환 컴포넌트 작성
    class OutputCompnent extends React.Component {
      // 마운트 라이프 사이클에서 이벤트 작성
      componentDidMount() {
        sendEvent(componentName);
      }
      render(){
        return (
          <InputComponent {...this.props} /> // InputComponent를 OuputComponent에서 반환
        )
      }
    }
  )
}