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 문법을 이용한 Components 사용법. 본문

[React] 💎 Class 문법을 이용한 Components 사용법.

Light9639

목차

    래스형 컴포넌트는 무엇인가?

    클래스형 컴포넌트는 함수형 컴포넌트와 React Hook이 등장하기 이전에 사용하던 컴포넌트 형태로 ES6(ECMA Script 2015)부터 추가된 JavaScript Class를 바탕으로 컴포넌트를 작성한다.


    함수형 컴포넌트

    • 성능이나 메모리 사용에 있어 약간의 이점이 있음
    • Hook을 통해 state, lifeCycle을 구현함
    • 클래스형 컴포넌트에 비해 표현이 간결함

     

    클래스형 컴포넌트

    • ES6(ECMA Script 2015)부터 추가된 Class를 통해 컴포넌트 선언
    • 함수형 컴포넌트와 Hook이 등장하기 전에 폭넓게 사용되었기 때문에, 레거시 코드에서 자주 발견할 수 있는 형태
    • 표현방법이 좀 더 명시적이고, 함수형 컴포넌트 보다 약간 기능이 더 많음

    클래스형 컴포넌트 생명주기

     

    마운트 단계 (Mounting)

    컴포넌트 객체가 최초로 생성되어 DOM에 삽입될 때 한 번 실행된다.

     

     

    업데이트 단계 (Updating)

    props, state가 변경될 때 마다 수행되며 변경사항을 화면에 표시한다.

     

     

    소멸 단계 (Unmounting)

    컴포넌트가 DOM상에서 제거될 때 한 번 호출된다.

     

     

    오류 처리

    위 생명주기에 나타나지 않았지만 오류가 발생하면 아래 메서드가 순차적으로 호출됨

    • static getDerivedStateFromError()
    • componentDidCatch()

    실제 사용 예제

    TypeScript
    class Modal2 extends React.Component {
      constructor(props){
        super(props);
        this.state = {
          name : 'kim',
          age : 20
        }
      }
    
      render(){
        return (
          <div>
              <div>안녕 { this.state.age }
                <button onClick={()=>{ this.setState({age : 21}) }}>버튼</button>
              </div>
              <div>안녕 { this.props.프롭스이름 }</div>
          </div>
        )
      }
    
    }

    class는 변수, 함수를 보관하는 박스와 같습니다. extends는 기존 class안에 있던 변수나 함수를 복사해주는 문법이다. 

     

    React.Component라는 class안에 있던 변수와 함수들을 복사해야 컴포넌트라고 인정해주기 때문에 class 어쩌구 extends React.Component라고 쓰는 것이다.

     

    state를 변경하고 싶으면 this.setState라는 기본함수를 가져다가 사용하면 된다. 소괄호안에 새로운 state 넣으면 그 값으로 기존 state를 업데이트한다. 완전히 값을 바꾸는 것이 아니라 차이점만 비교해서 잘 변경해준다.

     

    만약, 부모가 보낸 props를 출력하고 싶다면.

    1. constructor, superprops 파라미터를 등록하고.
    2. this.props 쓰면 props가 나온다. 

    클래스형 컴포넌트의 한계

    클래스형 컴포넌트가 명시적이고 기능이 더 많음에도 불구하고 함수형 컴포넌트로 대체된 데에는 몇가지 이유가 있습니다.

    1. 의례적으로 작성해야하는 코드량이 많음. 클래스형 컴포넌트는 React Component를 상속해야하며 라이프사이클 메서드를 정의해야하며 준수해야하는 규칙이 상대적으로 더 많습니다. 아래는 함수형 컴포넌트와 클래스형 컴포넌트의 차이를 보여줍니다.
    2. 성능상 불리함. 컴파일러가 코드 압축과 최적화를 진행하기에 약간 더 어려운 어려운 구조이며 , 메모리 사용량도 좀 더 높습니다.
    3. 공통로직 관리가 어려움. 클래스형 컴포넌트에서는 공통로직을 관리하기 위해 Higher Order Component 패턴이나 Render Props 패턴을 주로 사용하며, 이러한 패턴들은 대체로 복잡성이 높습니다. 함수형 컴포넌트는 그 자체가 함수이기 때문에 공통로직 관리가 간편합니다.

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

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

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


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

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

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

      Light9639
      티스토리에 팔로잉