본문 바로가기

Sparta x 이노베이션 캠프/React

TIL) Ref

반응형
Ref 은 이름표다!

클래스형 컴포넌트에서 만드는 방법

예) this.text = React.createRef(); (=텍스트에 Ref를 만들어 주자)

그러면 타겟인 "text" 가 있는 div옆에 <input type="text" ref={this.text}/>  (적용 끝) 

component DidMount() 로 ref 적용이 잘 되었는지 확인 해 줄 수 있다.

...

    this.state = {
        list: ["영화관 가기", "매일 책읽기", "수영 배우기"]
    };

    this.text = React.createRef();
    }

    componentDidMount() {
        console.log(this.text);
    }
    
    return (
    ...중략...
    
            <div>
                <input type="text" ref={this.text}/>
            </div>
        </div>
    );
    }
    }
...

 

콘솔을 보면 {current: input} 이라고 뜸. console.log(this.text.current.value) 하면 value값을 가져올 수 있음.

하지만 componentDidMount에 console.log(...)가 있어서 input에 작성해도 console에 안찍힘.

render()밑에 콘솔로그를 옮겨찍으면 null이 나옴. (=render되었을때 value는 null이었다.)

왜냐면 가상돔에만 올라가있고 진짜DOM에는 안올라와있어서. 

onChange={()=>{        

console.log(this.text.current.value)}};  를 input에 넣어주고 확인 할 수 있다. 

 

함수형 컴포넌트에서 Ref 만들기 : React Hook을 사용

useRef라는 훅을 사용해줌. 

 

이벤트리스너 : 사용자가 어떤 행동(=이벤트)을 하는 지 아닌지 지켜보다가 알려주는 것.

                       예를 들어 마우스클릭, 터치, 마우스 오버, 키보드 누름 등이 자주 쓰임.

...

const my_lists = list;
const my_wrap = React.useRef(null);

console.log(my_wrap)
return (
    < div ref={my_wrap} >
    {my_lists / map((list, index) = > {
return <ItemStyle key = {index} > {list} </ItemStyle>;
})}
}
)

...

React.useRef(초기값) >>>  console.log(my_wrap) 초기값이 null이기때문에 콘솔창에서 null 뜸. return후에 나온 my_wrap을 확인하고 싶으면

window.setTimeout() => {                

console.log(my_wrap)

}, 1000); 을 return 전 줄에 넣어줌.      //1 초 있다가 {} 안에 있는 내용을 실행해! 1초 사이에 return이 일어나서 console에 div가 뜸

반응형

'Sparta x 이노베이션 캠프 > React' 카테고리의 다른 글

TIL) 내 버킷리스트 만들기 - 라우팅, React  (0) 2022.08.17
TIL) 라우팅이란?  (0) 2022.08.17
TIL) eventListener  (0) 2022.08.17
TIL) React 키워드 정리  (0) 2022.08.16
TIL) yarn 과 npm 정의, 차이점  (0) 2022.08.12