createRef, useRef의 차이

`·2022년 4월 18일
0
post-custom-banner

ref 란?
특정 dom을 잡아야 할때 사용한다. createRef와 useRef 두 방식으로 ref를 만들 수 있다.
class형 컴포넌트에서는 createRef를 통해 ref를 사용하고, 함수형 컴포넌트에서는 useRef를 사용한다.

createRef를 함수형 컴포넌트에서 사용할 경우 문제점
import React, { useState, createRef } from "react";

const App = () => {
const valueRef = createRef();
const [, setState] = useState();
return (

<div>
  값 : {valueRef.current}
  <button onClick={() => ((valueRef.current = 88), setState({}))}>
    증가
  </button>
</div>

);
};

export default App;
위의 코드를 보면 렌더링의 문제는 없지만, 증가 버튼을 클릭해도 이전 과 같이 88로 바뀌지 않는 다는 것을 볼 수 있다.

그 이유는 App 컴포넌트가 setState에 의해 리렌더링 되면 App 컴포넌트를 초기화 하고 다시 만든다. 그에 따라 createRef도 다시 실행되는데, 이 때 createRef에 의해 만들어진 값은 무조건 null로 다시 초기화 된다.

하지만 useRef로 만들어진 값은 함수가 리렌더링 되어도 ref가 null로 초기화 되지 않는다. 따라서 함수형에서는 useRef 클라스형에서는 createRef를 사용하자

post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 4월 18일

유뷰트에 별코딩 이사람이 리액트훅 설명 엄청 잘해줌 useRef 보면 도움 많이 될 거야!

답글 달기