예시 코드
디자인 시스템을 위해 컴포넌트가 얼마나 사용되는지 기록을 남기고 모니터링하고자 한다.
// 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에서 반환
)
}
}
)
}