📝 ref
HTML에서 id를 사용하여 DOM에 이름을 다는 것처럼 React프로젝트 내부에서 DOM에 이름을 다는 방법이
ref(reference)
개념입니다.
🔎 함수형 컴포넌트에서 ref를 사용하려면 Hooks를 사용해야 하기 때문에
Class형 컴포넌트 먼저 알아보겠습니다.
직접 건드려야 할 때
사용하게 됩니다.콜백 함수
를 사용하는 것입니다. props
로 전달해 주면 됩니다. <input
ref={(ref) => {
this.input = ref;
}}
/>
위의 input 요소는 앞으로 react 코드 내에서 this.input을 통하여 접근이 가능해집니다.
this.input 말고 사용자가 원하는 어떤 이름이라도 자유롭게 가능합니다.
이는 react 내에서 id
처럼 쓰이게 된 것입니다.
ref를 만드는 또 다른 방법은 react에 내장되어 있는 createRef라는 함수를 사용하는 것입니다.
이 기능은 react v16.3부터 도입되었으며 이전 버전에서는 작동하지 않습니다.
import { Component } from 'react';
class Sample extends Component{
input = React.createRef();
handleFocus = () => {
this.input.current.focus();
}
render(){
return(
<div>
<input ref={this.input} />
</div>
)
}
}
export default Sample;
React.createRef()
를 담아주어야 합니다.ref props
로 넣어 주면 ref 설정이 완료됩니다.this.input.current
를 조회하면 됩니다..current
를 넣어 주어야 한다는 것입니다.react에서는 컴포넌트에도 ref를 달 수 있습니다. 이 방법은 주로 컴포넌트 내부에 있는 DOM을 컴포넌트 외부에서 사용할 때 씁니다. DOM에 ref를 다는 방법과 똑같습니다.
<MyComponent
ref={(ref) => {this.myComponent}}
/>
이렇게 하면 MyComponent 내부의 메서드 및 멤버 변수에도 접근할 수 있습니다.