출처 : 패스트캠퍼스 한 번에 끝내는 프론트엔드 개발 초격차 패키지
HOC(Higer Order Component): 컴포넌트 안에있는 로직을 재활용할 수 있는 advanced technique
사용하는 법
import React from "react";
class ControlledComponent extends React.Component {
state = {
value: "",
};
render() {
const { value } = this.state;
return (
<div>
<input value={value} onChange={this.change} />
<button onClick={this.click}>전송</button>
</div>
);
}
change = (e) => {
this.setState({ value: e.target.value });
};
click = () => {
console.log(this.state.value);
};
}
export default ControlledComponent;
inputRef = React.createRef();
import React from "react";
class UncontrolledComponent extends React.Component {
inputRef = React.createRef();
render() {
console.log("initial render", this.inputRef);//current:null
return (
<div>
<input ref={this.inputRef} />
<button onClick={this.click}>전송</button>
</div>
);
}
componentDidMount() {
console.log("componentDidMount", this.inputRef);
//current:input
}
click = () => {
console.log(this.inputRef.current.value);
};
}
export default UncontrolledComponent;