useState 변화 => 렌더링 => 변수 값 초기화 됨
useRef 변화 => 렌더링 안함 => 변수들의 값 유지
useState 변화 => 렌더링 => ref의 값 유지
<input>
- focus()
play()
, pause()
, remove()
const 주소값을_담는_그릇 = useRef(참조자료형)
// 이제 주소값을_담는_그릇 변수에 어떤 주소값이든 담을 수 있다
return (
<div>
<input ref={주소값을_담는_그릇} type="text" />
{/* React에서 사용가능한 ref속성에 주소값을_담는_그릇을 값으로 할당하면*/}
{/* 주소값을_담는_그릇 변수 = input DOM 엘리먼트의 주소가 담김 */}
{/* 다른 컴포넌트에서 input DOM 엘리먼트를 활용 가능. */}
</div>);
function TextInputWithFocusButton() {
const inputEl = useRef(null);
const onButtonClick = () => {
inputEl.current.focus();
};
return (
<>
<input ref={inputEl} type="text" />
<button onClick={onButtonClick}>Focus the input</button>
</>);
}
DOM을 직접 조작시 리렌더링 되지 않음
<input>
에 focus()
media playback play()
, pause()
, remove()