useRef

바유·2022년 4월 12일
0

seRef
함수형 컴포넌트에서 쓰는 리액트 훅중 하나

ex)A버튼을 누르면 B버튼을 누르게되는 기능으로 활용


기본 원리
// 훅 임폴트
import {useRef} from 'react'

//Ref코드 생성
const inputRef = useRef()

// Ref를 적용하고 싶은 input태그(=접근하고 싶은 태그)
//

//태그에 접근해서 실행시킬 함수 _ useEffect참고는 바로 아래에서!
useEffect(()=>{
console.log("마운트 됨")
inputRef.current?.focus()
})


import { useRef, useState, useEffect } from "react";
import { useRouter } from "next/router";

export default function index() {
 const [count, setCount] = useState(0);
 const inputRef = useRef<HTMLInputElement>(null);
 const Router = useRouter();
 useEffect(() => {
   console.log("수정되고 다시 그려짐");
 }, [count]);

 useEffect(() => {
   console.log("마운트됌");
   inputRef.current?.focus();
   return () => {
     console.log("컴포넌트 사라짐");
   };
 }, []);

 const onClickMove = () => {
   Router.push("/");
 };

 const onClickCounter = () => {
   setCount((count) => count + 1);
 };

 return (
   <div>
     <input type="text" ref={inputRef}></input>
     <div>현재 카운트는:{count}</div>
     <button onClick={onClickCounter}> 카운트 올리기!</button>
     <button onClick={onClickMove}>
       나가기!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     </button>
   </div>
 );
}

useRef를 가져와 Ref를 적용시킬 변수를 선언한다 -> const inputRef = useRef(null)

JSX 부분에서 포커스를 이동시킬 input 태그 안에선언 -> ref={inputRef}
current 객체를 사용하여 focus()를 적용시켜서 useRef를 사용 -> inputRef.current?.focus();

0개의 댓글