---
title: createRef
---
`createRef`는 주로 [클래스 컴포넌트](/reference/react/Component)에 사용됩니다. 일반적으로 함수 컴포넌트는 [`useRef`](/reference/react/useRef)를 대신 사용합니다.
`createRef`는 임의의 값을 포함할 수 있는 [ref](/learn/referencing-values-with-refs) 객체를 생성합니다.
```js
class MyInput extends Component {
inputRef = createRef();
// ...
}
```
---
## 레퍼런스 {/*reference*/}
### `createRef()` {/*createref*/}
[ref](/learn/referencing-values-with-refs)를 [클래스 컴포넌트](/reference/react/Component) 안에 선언하려면 `createRef`를 호출합니다.
```js
import { createRef, Component } from 'react';
class MyComponent extends Component {
intervalRef = createRef();
inputRef = createRef();
// ...
```
[아래에서 더 많은 예시를 볼 수 있습니다.](#usage)
#### 매개변수 {/*parameters*/}
`createRef`는 매개변수를 받지 않습니다.
#### 반환값 {/*returns*/}
createRef`는 단일 속성을 가진 객체를 반환합니다.
* `current`: 처음에는 `null`로 설정됩니다. 이를 나중에 다른 것으로 설정할 수 있습니다. ref 객체를 JSX 노드의 `ref` 어트리뷰트로 React에 전달하면 React는 이를 `current` 프로퍼티로 설정합니다.
#### 주의 사항 {/*caveats*/}
* `createRef`는 항상 *다른* 객체를 반환합니다. 이는 `{ current: null }`을 직접 작성하는 것과 같습니다.
* 함수 컴포넌트에서는 항상 동일한 객체를 반환하는 [`useRef`](/reference/react/useRef)를 대신 사용할 수 있습니다.
* `const ref = useRef()`는 `const [ref, _] = useState(() => createRef(null))`와 동일합니다.
---
## 사용법 {/*usage*/}
### 클래스 컴포넌트에서 ref 선언하기 {/*declaring-a-ref-in-a-class-component*/}
[클래스 컴포넌트](/reference/react/Component)내에서 참조를 선언하려면 `createRef`를 호출하고 그 결과를 클래스 필드에 할당합니다.
```js {4}
import { Component, createRef } from 'react';
class Form extends Component {
inputRef = createRef();
// ...
}
```
이제 `ref={this.inputRef}`를 JSX에 있는 ``에 전달하면, React는 `this.inputRef.current`를 input DOM 노드가 차지하게 합니다. 예를 들어 input에 포커싱하는 버튼을 만드는 방법은 다음과 같습니다.
```js
import { Component, createRef } from 'react';
export default class Form extends Component {
inputRef = createRef();
handleClick = () => {
this.inputRef.current.focus();
}
render() {
return (
<>
>
);
}
}
```
`createRef`는 주로 [클래스 컴포넌트](/reference/react/Component)에 사용됩니다. 일반적으로 함수 컴포넌트는 [`useRef`](/reference/react/useRef)를 대신 사용합니다.
---
## 대안 {/*alternatives*/}
### `createRef`를 사용하는 클래스에서 `useRef`를 사용하는 함수로 마이그레이션하기 {/*migrating-from-a-class-with-createref-to-a-function-with-useref*/}
새로운 코드를 작성한다면 [클래스 컴포넌트](/reference/react/Component) 대신 함수 컴포넌트를 사용하는 것을 추천합니다. `createRef`를 사용하는 기존 클래스 컴포넌트가 있는 경우, 이를 변환하는 방법은 다음과 같습니다. 다음은 원본 코드입니다.
```js
import { Component, createRef } from 'react';
export default class Form extends Component {
inputRef = createRef();
handleClick = () => {
this.inputRef.current.focus();
}
render() {
return (
<>
>
);
}
}
```
[이 컴포넌트를 클래스에서 함수로 변환하려면,](/reference/react/Component#alternatives) `createRef` 호출을 [`useRef`](/reference/react/useRef) 호출로 바꿔줍니다.
```js
import { useRef } from 'react';
export default function Form() {
const inputRef = useRef(null);
function handleClick() {
inputRef.current.focus();
}
return (
<>
>
);
}
```