Development/React.js

ref로 DOM 노드 가져오기

moretz0921 2022. 3. 15. 19:45

ref로 DOM 노드 가져오기 
: 렌더링이 끝날 때 생기니까 current 값이 있을 경우 사용 할 것 

 

import { useEffect, useRef } from 'react';

function FileInput({ name, value, onChange }) {
  const inputRef = useRef();

  const handleChange = (e) => {
    const nextValue = e.target.files[0];
    onChange(name, nextValue);
  };

  useEffect(() => {
    if (inputRef.current) { // 조건 써줄 것 
      console.log(inputRef);
    }
  }, []);

  return <input type="file" onChange={handleChange} ref={inputRef} />;
}

export default FileInput;

 

 

1. Ref 객체 생성
: useRef 함수로 Ref 객체를 만들 수 있다.

 

import { useRef } from 'react';

// ...

const ref = useRef();

 



2. ref Prop 사용하기 
: ref Prop에다가 앞에서 만든 Ref 객체를 내려준다.

 

const ref = useRef();

// ...

<div ref={ref}> ... </div>

 



3. Ref 객체에서 DOM 노드 참조하기
: Ref 객체의 current 라는 프로퍼티를 사용하면 DOM 노드를 참조할 수 있다.

 

const node = ref.current;
if (node) {
  // node 를 사용하는 코드
}



- current 값은 없을 수도 있으니까 반드시 값이 존재하는지 검사하고 사용하자