Hooks - useRef
2021. 9. 29. 16:28ㆍReact/문법
- useRef : 리액트를 사용하는 프로젝트에서도 가끔씩 DOM 을 직접 선택해야 하는 상황이 발생 할 때 사용하는 훅
1. useRef() 를 사용하여 Ref 객체를 만들고, 이 객체를 우리가 선택하고 싶은 DOM 에 ref 값으로 설정해주어야 합니다. 그러면, Ref 객체의 .current 값은 우리가 원하는 DOM 을 가르키게 됩니다.
import React, { useState, useRef } from 'react';
function InputSample() {
const [inputs, setInputs] = useState({
name: '',
nickname: ''
});
const nameInput = useRef();
const { name, nickname } = inputs; // 비구조화 할당을 통해 값 추출
const onChange = e => {
const { value, name } = e.target; // 우선 e.target 에서 name 과 value 를 추출
setInputs({
...inputs, // 기존의 input 객체를 복사한 뒤
[name]: value // name 키를 가진 값을 value 로 설정
});
};
const onReset = () => {
setInputs({
name: '',
nickname: ''
});
nameInput.current.focus();
};
return (
<div>
<input
name="name"
placeholder="이름"
onChange={onChange}
value={name}
ref={nameInput}
/>
<input
name="nickname"
placeholder="닉네임"
onChange={onChange}
value={nickname}
/>
<button onClick={onReset}>초기화</button>
<div>
<b>값: </b>
{name} ({nickname})
</div>
</div>
);
}
export default InputSample;
2. 컴포넌트 안에서 조회 및 수정 할 수 있는 변수를 관리하는 것 입니다.
참고) 1. useRef
함수형 컴포넌트가 해당 컴포넌트의 state나 props가 변경될 때마다 호출된다는 것을 알았고 이로써 함수형 컴포넌트 내부에 선언된 변수와 그것이 감싸는 데이터는 해당 컴포넌트가 호출될 때마다 초기화된다는 걸 알 수 있습니다. 반면 useRef로 감싸진 current가 가리키는 값은 React에 의해 기억되기에 직접 변경하기 전까지 해당 컴포넌트가 호출될 때마다 동일합니다.
const nextId = useRef(4);
const onCreate = () => {
// 나중에 구현 할 배열에 항목 추가하는 로직
// ...
nextId.current += 1;
};
return <UserList users={users} />;
'React > 문법' 카테고리의 다른 글
Hooks - useEffect (0) | 2021.09.29 |
---|---|
배열 렌더링 (0) | 2021.09.29 |
Hooks - useState (3) | 2021.09.29 |
JSX 기본 문법 (0) | 2021.09.29 |
TypeScript (0) | 2021.09.27 |