Let's Study Coding

Welcome to Visit!!
Let's get it

웹 개발자로의 새로운 여정을 시작해 보겠습니다.

총 방문자
총 포스팅
오늘 방문자
000일 째 블로그 운영중

여러분들의 방문을
진심으로 환영합니다

웹 개발자로서, 다양한 개발 지식을 다루는
블로그를 만들어보겠습니다. 😃

최근 글

막 올라온 최신 포스팅을 구경해보세요 !

참고하는 웹사이트 목록 💻

필자가 자주 참고하는 웹사이트를 둘러보세요.

Img
2023. 2. 22. 22:45
[WebSite] 🖥️ 웹 개발을 할 때 자주 참고하는 사이트 모음.
목차 제가 웹개발을 할 때 자주 참고하는 사이트를 정리한 포스팅입니다. @Web's CSS 코드펜의 자료들 중 좋은 자료들을 모아 놓은 티스토리 블로그 사이트. 매우 유용한 자료가 많아서 애용하는 블로그다. @web's CSS 코드펜 레퍼런스 사이트입니다. wsss.tistor
더보기
Img
2023. 2. 13. 15:16
[WebSite] 🎨 유용한 무료 이미지 사이트 모음
목차 제가 주로 사용하는 또는 인터넷에서 찾은 유용한 무료 이미지 사이트를 모아서 정리한 포스팅입니다. Unsplash Unsplash는 200만개 이상의 완전 무료 고해상도 이미지를 제공하는 무료 이미지 사이트이다. 전 세계의 사진가들이 라이브러리에 사진을 제공하기
더보기
Img
2023. 2. 13. 15:01
[WebSite] 🖥️ 저작권 무료 목업 사이트 6곳 추천
포토샵, 일러스트를 이용한 디자인 작업을 할 때 로고나 웹, 패키지 등 디자이너들이 자신의 작업물을 더 업그레이드 하기 위하여 목업을 활용하고 있다. 오늘은 제가 주로 사용했던 무료 목업 사이트를 작성해보려고 한다. 1. Anthony Boyd Graphics Free Mockups
더보기
Img
2023. 2. 11. 20:33
[WebSite] 🌈 Gradient 사이트 모음.
목차 프론트엔드 웹개발을 하다 보면 Gradient를 이용하여 작업을 해야할 때가 많다. 문제는 Gradient 디자인을 할 때 단색으로 많은 톤을 잡지만 두 가지 이상을 사용할 때 조합이 어색하다면 전체적인 느낌이 살지 않을 수 있다. 하지만 조합이 잘된 그라데이션(Grada
더보기
Img
2023. 2. 11. 19:26
[WebSite] 🖥️ 유용한 SVG 사이트 모음
프론트엔드 작업을 하다보면 SVG를 사용하여 사이트를 만들어야 할 때가 생긴다. 그래서 어떤 유용한 SVG 사이트가 있는지를 알아볼 겸 자주 사용하는 SVG 사이트를 정리해서 작성해보려고 한다. 필자는 주로 7개의 SVG 사이트를 이용한다. 1. 부트스트랩(Bootstra
더보기

CSS 스타일링 🎨

웹 개발을 할 때 사용하는 CSS 사용방법을 확인해보세요.

Let's Write Message

Guest Book

블로그를 방문해주셔서 감사드립니다.
자유롭게 댓글 달아주세요 ~

Let's Choose Tag Box

Tag Page

원하시는 태그를 클릭해보세요.

Light Dev
Light Dev에서 공부한 내용을 정리합니다.

-

[React] 💎 Class 문법에서의 LifeCycle hook 사용법. 본문

[React] 💎 Class 문법에서의 LifeCycle hook 사용법.

Light9639

목차

    React의 LifeCycle은 무엇인가

    React로 웹개발을 하다 보면 컴포넌트에 Lifecycle이라는 개념이 있다. 컴포넌트는 생성이 될 수도 있고 (전문용어로 mount), 재렌더링이 될 수도 있고 (전문용어로 update), 삭제가 될 수도 있습니다. (전문용어로 unmount)

     

    컴포넌트의 Lifecycle을 알아야 하는 이유는, 이걸 알아야 "컴포넌트의 인생 중간중간에 실행할 코드"를 삽입할 수 있기 때문이다. 컴포넌트가 장착이 될 때 특정 코드를 실행할 수도 있고 컴포넌트가 업데이트될 때 특정 코드를 실행할 수 있는 것이다.


    Class 문법에서의 LifeCycle hook 사용법

    주로 사용되는 LifeCycle hook

    TypeScript
    class App extends React.Component {
      componentDidMount(){
        //App 컴포넌트가 로드되고나서 실행할 코드
      }
      componentDidUpdate(){
        //App 컴포넌트가 업데이트 되고나서 실행할 코드
      }
      componentWillUnmount(){
        //App 컴포넌트가 삭제되기전에 실행할 코드
      }
    }

    componentDidMount

    • 컴포넌트가 마운트 된 후 호출됩니다.
    • 브라우저에서 한 번만 실행됩니다.
    • axios, fetch 등을 사용하여 외부 라이브러리 연동 및 네트워크 요청을 보내는데 적절합니다.

    componentDidUpdate

    • 컴포넌트가 갱신된 후 호출됩니다.
    • 즉, 컴포넌트의 state가 변경되었을 경우 실행됩니다.
    • 갱신이 일어난 후 호출되므로 최초 렌더링에서는 호출되지 않습니다. 

    componentWillUnmount

    • 컴포넌트가 마운트 해제되어 제거되기 직전에 호출된다.
    • 컴포넌트가 마운트 해제되면 다시 렌더링 되지 않으므로 state를 변경하는 setState()를 사용해서는 안된다.

    그 외의 LifeCycle hook

    위의 3개의 생명 주기 이외에도 더 이상 사용하면 안 되는 UNSAFE_componentWillUpdate, UNSafe_componentWillReceiveProps 그리고 잘 사용하지 않는 shouldComponentUpdate, getDerviedStateFromProps 등등 여러 가지의 생명주기 메소드가 존재한다.

     

    하지만, React Hook은 자주 사용되는 그리고 꼭 필요한 생명주기 메소드인 componentDidMount, componentDidUpdate, componentWillUnmount를 하나의 APIuseEffect로 통합하였다.

     

    그러면 useEffect에서 클래스 컴포넌트의 생명 주기 메소드 componetDidMount, componentDidUpdate, componentWillUnmount를 구현하고 useEffect와 비교해 보는 코드를 작성하겠습니다.


    React Hook에서 componentDidMount

    밑의 코드는 클래스 컴포넌트에서 componentDidMount를 구현한 코드이다.

    TypeScript
    import React from "react";
    
    class App extends React.Component {
        componentDidMount() {
            console.log('App componentDidMount()');
        }
        
        render() {
            return <h1>App Component Life Cycle</h1>;
        }
    }

    밑의 코드는 함수형 컴포넌트에서 useEffect를 사용하여  componentDidMount를 사용한 코드입니다.

    TypeScript
    import React, { useEffect } from "react";
    
    const App = () => {
        useEffect(() => {
            console.log('App componentDidMount()');
        }, []);
        
        return <h1>App Component Life Cycle</h1>;
    }

    useEffect에 두 번째 매개변수로 빈 배열( [] )을 전달하여 컴포넌트가 마운트된 직후 한 번만 실행된다.


    React Hook에서 componentDidUpdate

    밑의 코드는 클래스 컴포넌트에서 componentDidUpdate를 사용한 코드이다.

    TypeScript
    import React from "react";
    
    class App extends React.Component {
        componentDidUpdate() {
            console.log('App componentDidUpdate()');
        }
        
        render() {
            return <h1>App Component Life Cycle</h1>;
        }
    }

    밑의 코드는 함수형 컴포넌트에서 useEffect를 사용하여 componentDidUpdate를 사용한 코드입니다.

    TypeScript
    import React, { useEffect } from "react";
    
    const App = () => {
        useEffect(() => {
            return() => {
                console.log('App componentWillUnmount()');
            }
        });
        
        return <h1>App Component Life Cycle</h1>;
    }

    componentDidMount와 유사하지만 useEffect에 두 번째 매개변수가 존재하지 않다는 차이점이 있다.


    React Hook에서 componentWillUnmount

    밑의 코드는 클래스 컴포넌트에서 componentWillUnmount를 사용한 코드이다.

    TypeScript
    import React from "react";
    
    class App extends React.Component {
        componentWillUnmount() {
            console.log('App componentWillUnmount()');
        }
        
        render() {
            return <h1>App Component Life Cycle</h1>;
        }
    }

    밑의 코드는 함수형 컴포넌트에서 useEffect를 사용하여 componentWillUnmount를 사용한 코드이다.

    TypeScript
    import React, { useEffect } from "react";
    
    const App = () => {
        useEffect(() => {
            return() => {
                console.log('App componentWillUnmount()');
            }
        }, []);
        
        return <h1>App Component Life Cycle</h1>;
    }

    이 또한 componentDidMount와 유사하지만 useEffect 내부에 return문이 존재한다. useEffect 내부의 return문은 해당 컴포넌트가 DOM에서 제거될 때만 호출된다.


    잘못된 내용이 있으면 언제든 피드백 부탁드립니다.

    이 글이 좋으셨다면 구독 & 좋아요

    여러분의 구독과 좋아요는
    저자에게 큰 힘이 됩니다.


    Light Dev
    Light dev
    웹 개발자로의 새로운 여정을 시작해 보겠습니다. 조언해주실 부분이 있으시면 언제든 이메일 부탁드립니다.

    사이트를 방문해 주셔서 감사합니다

    만일 도움이 되셨으면 공감과 구독 버튼 클릭 부탁드립니다.
    추가적인 질문사항이나 이해가 안되는 점이 있으면 댓글로 적어주세요.

      Light9639
      티스토리에 팔로잉