Dev/JavaScript | React

React | 리액트 Hooks 공부하기 2 (useEffect , useTitle, useClick, useConfirm, usePreventLeave)

sooya14 2020. 4. 4. 15:15

 

 

이어서 다시 리액트 훅 공부 ㄱㄱ 

 

(

포스팅 했던거 임시저장 분명 해놓았는데 

날라가서 

다시 정리...

ㅂㄷㅂㄷ

)

 

 

| useEffect 

(실전형 리액트 Hooks | #2 0 Introduction to useEffect)

 

useEffect 는 

componentWillUnmount 와 componentDidMount, componentWillUpdate 와 비슷하다!

 

리액트 훅으로 작업할 때는 이 function 이 중요한데, 

 

예제>

컴포넌트가 마운트될때 바로 function 을 실행하려고 한다

 

 

** POINT ** 

dependency 중요하다!

빈 리스트인지, 어떤 값이 들어있는지에 따라 컴포넌트의 마운트 상태가 달라진다!!

 

 

 

| useTitle

(실전형 리액트 Hooks | #2 1 useTitle)

 

처음에는 Loaging

 

5초 후에 Home 으로 바뀐다

 

하나의 value 가 바뀌면

setTitle 을 이용할 것이고  이게 시발점이 되어서 모든 것들이 작동하게 된다.  

 

 

| useClick

(실전형 리액트 Hooks | #2 2 useClick)

 

reference는, 

기본적으로 우리의 컴포넌트의 어떤 부분을 선택할 수 있는 방법이다 

 

 

인풋창에 5초후에 포커스 효과 넣어보기 

5초 후에 인풋창에 효과가 나타난다

 

| useClick 

(실전형 리액트 Hooks | #2 2 useClick)

 

 

useEffect는,

componentDidmount 상태에 작동한다. 

 

 

HI 를 클릭하면 콘솔에 say hello 가 찍혀여

 

componentWillUnmount 일때, 이벤트가 발생한 뒤 정리할 필요가 있기 때문에 

function을 retrun 한다. (44~48 줄)

 

정리를 해보자면!

컴포넌트를 콜할때는 블록처리(40~43 줄)이 마운트 된다

 

** POINT ** 

useEffect 는 componentWillUnmount 때 발생하게 되는데

useEffect 안에 fuction 을 넣으면, + dependency 가 존재한다면, 

componentDidMount, componentDidUpdate 때 호출된다  

useEffect 를 return 받은 그 함수는 componentWillUnmount때 호출된다. 

 

다시다시

function은 , 

componentWillUnMount로 부터 호출(40~43) -> componentWillUnmount 때 return 호출 (44~48)

 

=> 중요한 이유는, 컴포넌트가 마운트 되지 않았을 때 이벤트리스터가 배치되게 하고 싶지 않기 때문이다!!!

 

 

(

이러한 개념은 이후 강의에서 반복된다고 하네요.. 

그래서 잘 이해는 안되지만 넘어감... 

)

 

| useConfirm 

실전형 리액트 Hooks | #2 3 useConfirm & usePreventLeave

 

 

usecofirm, usePreventLeave 는 

실제로는 Hooks 이 아니다 ( useState, useEffect 를 사용하지 않기 때문)

 

useConfrim 은, 

사용자가 무언가를 하기전에 확인하는 것 

예를 들어, 사용자가 버튼을 클릭하면 이벤트를 실행하기 전에 메세지를 보여준다든가 

 

 

 

버튼 클릭하니깐 알림창 뚜둥!

 

그런데!

 

 

여기 코드 부분이 강의랑 달랐습니다 

강의에서는

confirm(message)

8째줄에 window. 가 붙지 않았어요...

 

 

애초에 defualt 값으로 window. 가 설정이 되어있다고는 하는데 

 

이런 에러가 떴어요 ㅠㅠ 

왜일까요... ㅇㅅㅇ

 

 

| usePreventLeave

 

윈도우 창을 닫을 때 아직 저장하지 않았다고 알림창 보여주는 것 

 

여기선 hooks 를 요구하지 않는다! 

 

 

protect 버튼 클릭 후, 화면 나갈려고 하면, 

 

unprotect 버튼 누르면 그냥 화면에서 나가진다!