useRef
DOM 요소에 액세스할 수 있는 React Hook!
예를 들어 화면이 렌더링되자마자 입력 태그 집중 그래야 한다면
사용하는 방법
그리고 당신도 바꿀 수 있습니다!
import "./App.css";
import { useRef } from "react";
function App() {
const ref = useRef("초기값");
console.log("ref", ref);
// function App() {
// const ref = useRef("초기값");
// console.log("ref 1", ref);
// ref.current = "바꾼 값";
// console.log("ref 1", ref);
return (
<div>
<p>useRef에 대한 이야기에요.</p>
</div>
);
}
export default App;
이렇게 설정한 ref 값은 컴포넌트가 계속 렌더링되더라도 언마운트 될 때까지 값을 유지합니다!
이 기능으로 인해 useRef는 다음 두 가지 용도로 사용됩니다.
1. 수납공간
– 상태와 비슷한 역할을 합니다. 그러나 상태가 변경되면 렌더링이 다시 발생합니다. 내부 변수가 초기화됩니다.
– refs에 저장된 값은 렌더링을 일으키지 않습니다. 즉, ref의 값이 변경되더라도 렌더링으로 인해 내부 변수가 초기화되는 것을 방지할 수 있다.
– 컴포넌트 렌더링 100회 → ref에 저장된 값이 유지됩니다.
요컨대
다시 렌더링해야 하는 값을 처리할 때 상태를 사용합니다.
ref는 다시 렌더링하지 않는 값을 저장하는 데 사용됩니다.
2. DOM
– 특정 입력이 렌더링되자마자 포커스가 필요한 경우 useRef를 사용할 수 있습니다.
상태와 참조의 차이점
상태가 변경될 때 렌더링되고 ref가 변경될 때 렌더링되지 않는다는 것을 다시 한 번 기억하십시오!!!
DOM 액세스
태그에는 ref라는 속성이 있습니다. 이렇게 하면 해당 DOM 요소에 액세스할 수 있습니다.
useRef를 사용한 초점 주기
import { useEffect, useRef } from "react";
import "./App.css";
function App() {
const idRef = useRef("");
// 렌더링이 될 때
useEffect(() => {
idRef.current.focus();
}, ());
return (
<>
<div>
아이디 : <input type="text" ref={idRef} />
</div>
<div>
비밀번호 : <input type="password" />
</div>
</>
);
}
export default App;
아이디 10자리 입력 시 자동으로 비밀번호 입력란으로 이동하는 코드
import { useEffect, useRef, useState } from "react";
import "./App.css";
function App() {
const idRef = useRef("");
const pwRef = useRef("");
const (id, setId) = useState("");
const onIdChangeHandler = (event) => {
setId(event.target.value);
};
// 렌더링이 될 때
useEffect(() => {
idRef.current.focus();
}, ());
// 왜 useEffect 안에 놓았을까요?
useEffect(() => {
if (id.length >= 10) {
pwRef.current.focus();
}
}, (id));
return (
<>
<div>
아이디 :
<input
type="text"
ref={idRef}
value={id}
onChange={onIdChangeHandler}
/>
</div>
<div>
비밀번호 : <input type="password" ref={pwRef} />
</div>
</>
);
}
export default App;
암호 유형은 암호입니까? -> 숫자 숨기기

왜 ID.길이 ≥ 10 이 논리를 useEffect 안에 넣었습니까?
~~