항해99

[항해99] TIL D+21

crab. 2022. 8. 1. 03:51
반응형

항해톡 왜 신청했지…

  • 엄청난 부담이 가해지고 있다.
  • 물론 안다 하고 나면 얻는게 상당히 많다는걸
  • 근데 그것도 알아야한다.. 끝내기전에는 계속 후회한다는걸...
  • 우선 또 익숙하게 밤을 새고 있다.
  • 리액트도 바빠 죽겠는데..
  • 우선 최선을 다해보자

리액트

  • 리덕스만의 문제가 아니다.
  • 라우트 기능도 마스터를 해야하며
  • v5, v6의 차이점을 잘 알아둬야 한다.

State

state란?

  • 일반적으로 컴포넌트의 내부에서 변경 가능한 데이터를 관리해야할 때에 사용 한다.
  • 프로퍼티(props)의 특징은 컴포넌트 내부에서 값을 바꿀 수 없다는 것이었다. 하지만 값을 바꿔야 하는 경우도 분명 존재하며, 이럴때 state라는 것을 사용한다.
  • 값을 저장하거나 변경할 수 있는 객체로 보통 이벤트와 함께 사용된다.
  • 컴포넌트에서 동적인 값을 상태(state)라고 부르며, 동적인 데이터를 다룰 때 사용된다 볼 수 있다.

선언방법

  • react 모듈에서 { useState }를 불러오고 useState()를 선언해서 사용면 된다.
  • useState의 변수값이 바뀌면 컴포넌트가 새롭게 렌더링 된다.
    • const [state, setState] = useState(initialState);
    • const [ 데이터, 데이터변경함수 ] = useState(초기값(생략가능));

Props

프로퍼티(props)란?

  • 프로퍼티, props(properties의 줄임말) 라고 한다.
  • 상위 컴포넌트가 하위 컴포넌트에 값을 전달할때 사용한다.(단방향 데이터 흐름 갖는다.)
  • 프로퍼티는 수정할 수 없다는 특징이 있다.(자식입장에선 읽기 전용인 데이터이다.)

사용방법?

  • 프로퍼티에 문자열을 전달할 때는 큰따옴표(" ")를, 문자열 외의 값을 전달할 때는 중괄호({ })를 사용 한다.

프로퍼티의 자료형, 타입 정의

  • 프로퍼티의 자료형을 미리 선언할 수 있다. (타입스크립트와도 일맥상통한 부분이 어느정도 있기도 하지만, 지금은 넘어 가자)
  • 리액트 엔진이 프로퍼티로 전달하는 값을 효율적으로 알 수 있고, 버그예방에도 도움이 된다.
  • 리액트에서 제공하는 prop-types를 이용하여 각각의 자료형을 선언하면 된다.

프로퍼티 기본값 설정 및 필수값 설정

  • 기본값 설정 - 컴포넌트에 props 기본값을 설정하고 싶은 경우 defaultProps를 설정하면 된다.

불리언 프로퍼티 사용하기

  • true, false만 정의 가능한 자료형
  • 중괄호로 감싸 전달할 필요 없이 프로퍼티의 이름만 선언하면 된다.

props.children 활용하기

  • children을 사용하여 내부에 있는 내용을 표현할 수 있다.

리렌더링의 조건

state 변경이 있을 때

  • react 에서 유동적인 데이터를 저장하기 위해서 state 라는 것을 이용한다. 이때 state 값을 바꿔주기 위해서는 state 를 직접 조작해서는 안되고 setState() 메서드를 이용해 주어야한다. 왜냐하면 리액트는 state 의 변경이 감지되면 리렌더링을 해주는 데 메서드를 사용하지 않고 직접 바꿔주게 되면 리액트가 state 의 변경을 감지하지 못하게 된다.

새로운 props이 들어올 때

  • 전달받은 props 값이 업데이트 됬다면 리 렌더링 된다.

부모 컴포넌트가 렌더링 될 때

  • 새로운 prop 이 들어오지 않더라고 부모컴포넌트가 리렌더링 된다면 자식컴포넌트 역시 리렌더링이 된다.

shouldComponentUpdate에서 true가 반환될 때

  • 각각의 컴포넌트는 shouldComponentUpdate 라는 메소드를 가지고 있는데 이는 state가 병경되거나 새로운 props를 전달받는경우 실행이 된다 이때 기본적으로 return 값은 true 가 되어 rendering 이 시작되지만 rerendering 이 필요하지 않은 부분이라면 개발자가 return value 를 false 값으로 지정함으로써 리렌더링 되는 상황을 막아줄수 있게된다.

forceUpdate가 실행될 때

  • props 나 state 가 아닌 다른 값이 변경되었을 때 리렌더링을 하고 싶다면 그때 사용할수 있는 메서드 이다.
반응형

'항해99' 카테고리의 다른 글

[항해99] TIL D+23  (2) 2022.08.03
[항해99] TIL D+22  (1) 2022.08.02
[항해99] TIL D+20  (0) 2022.07.31
[항해99] TIL D+19  (0) 2022.07.30
[항해99] TIL D+18  (0) 2022.07.29