Hooks - useRef

2021. 9. 29. 16:28React/문법

- 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