useRef 특징
  - DOM 요소나 다른 값을 저장하고 관리하는데 사용됨
- 컴포넌트의 생명주기와 상관 없이 값을 유지하기 때문에 컴포넌트 리렌더링이 일어나도 값을 유지함
- current프로퍼티를 이용하지 않으면 useRef 안에 들어있는 값에 접근 할 수 없음
사용
  - 예시
    const {ref name} = useRef({initialValue})
<div ref={ref name} ></div>
 
- initialValue
    
      - current프로퍼티에 들어가길 원하는 초기값을 넣어줌
- 아무 타입이나 될 수 있으며, 첫 렌더링 이후에는 무시됨
 
- current
    
      - useRef가 return 하는 값
- 초기에 넣어준 initialValue를 가지고 있으며, 추후에 value값을 변경 가능함
- JSX node에 ref를 사용하면 React는 해당 node를 current에 넣음
 
1. DOM 요소에 접근
  - 예시
    import React, { useRef } from "react";
const FocusInputExample = () => {
  const inputRef = useRef(null);
  const handleButtonClick = () => {
    inputRef.current.focus();
    console.log('set focus to the input field');
  };
  return (
    <div>
      <input ref={inputRef} type="text" />
      <button onClick={handleButtonClick}>Focus Input</button>
    </div>
  );
};
 
      - 결과 화면
 
 
2. 값의 저장과 변경
  - DOM 상태 변화에 따른 리렌더링이 필요 없을때 사용
- 예시
    import React, { useRef } from "react";
export const RefExample = () => {
  const inputRef = useRef(null);
  const handleInputChange = () => {
    const inputValue = inputRef.current.value;
    console.log("Input Value:", inputValue);
  };
  return (
    <div>
      <input
        ref={inputRef}
        type="text"
        onChange={handleInputChange}
        placeholder="Type something..."
      />
    </div>
  );
};
 
      - 결과 화면
 
 
3. 외부 라이브러리와의 통합
  - useRef를 사용하여 외부 라이브러리와 상호작용
- 예시
    import React, { useRef } from "react";
import Select from "react-select";
export const ExternalLibraryExample = () => {
  const selectRef = useRef(null);
  const options = [
    { value: "apple", label: "Apple" },
    { value: "banana", label: "Banana" },
    { value: "orange", label: "Orange" }
  ];
  const handleButtonClick = () => {
    // 외부 라이브러리와의 상호작용
    console.log('set focus to the select field');
    if (selectRef.current) selectRef.current.focus();
  };
  return (
    <div>
      <Select ref={selectRef} options={options} />
      <button onClick={handleButtonClick}>Set Focus to Select</button>
    </div>
  );
};
 
      - 결과 화면
