본문 바로가기
STUDY/멋쟁이사자처럼

REACT (2)

by IT것저것 2022. 8. 11.

State & Component 사용하기

 

목차

1. component에 대한 이해

2. state·props에 대한 이해

3. component의 효율적 활용

실습


Component 란? 

앱을 이루는 최소한의 단위

- UI는 재사용 가능한 개별적인 여러 조각으로 나누고 각 조각을 개별적으로 나누어 코딩

- props 혹은 state 값을 입력 받아 DOM 노드 생성

-이름은 항상 대문자

> 소문자로 시작하는 컴포넌트는 DOM 태그로 취급

 

UI를 조각으로 나눈 컴포넌트에 대해서 직관적으로 이해해보자

 

이 인스타 페이지에서는 검색 컴포넌트, 프로필 컴포넌트, 스토리 컴포넌트, 포스터 컴포넌트로 크게 나눠볼 수 있다

 

컴포넌트를 분리해서 개발을 진행할 경우 각 사람들이 특정 컴포넌트를 담당하고 개발하기 때문에 동시에 여러 컴포넌트 개발이 가능하고 컴포넌트가 작은 단위로 이루어져있기 때문에 만들어둔 컴포넌트를 페이지에서 재사용할 수 있어 코드의 재사용성이 좋아져 효율적인 개발이 가능하다

 

Component의 선언 방식

 

class / function

클래스형과 함수형

 

리액트 매뉴얼에서 권고하는 방식은

함수형 + Hooks

클래스형 컴포넌트 함수형 컴포넌트
state 기능 · 라이프 dhqd사이클 기능 제공 state, 라이프 사이클 api 사용불가능
:16.8 업데이터 이후 Hooks 도입으로 해결 
임의 메서드 정의 가능 배포 단계에서도 비교적 작은 파일 크기
render 함수 필수
: render 함수 내부에서 jsx 반환
편한 선언, 비교적 적은 메모리 자원 사용

 

 

Props

properties

컴포넌트 속성 설정 시 사용하는 요소

props의 값은 부모 컴포넌트에서 설정해준다

자식 컴포넌트를 수정하여 렌더링

속성을 나타내주는 데이터를 말함

특정 값을 컴포넌트에 전달해주기 위해 사용함

props는 컴포넌트의 객체형태로 전달되며 매개변수를 통해 조회할 수 있다

 

Props

컴포넌트 속성 설정

위에 두 코드를 보면 component의 component는 app component를 부모로 가지고 있다

 

* 파라미터(parameter, 매개변수)란 변수의 특별한 한 종류로서, 함수 등과 같은 서브루틴의 입력값(input)으로 제공되는 여러 데이터 중 하나를 가리키기 위해 사용

props

defaultProps

별도의 props 값이 없는 경우 보여주는 기본 값

 

props

defaultProps : 기본 값 설정

비구조화 할당 문법으로 내부 값 추출

더 짧은 코드로 사용하기

중괄호 안에 값을 입력해 객체에서 바로 추출해 사용하면 props 값을 이용해 호출했을 때와 동일한 결과를 더 간단하게 얻을 수 있다

 

state

state

컴포넌트 내부에서 바뀔 수 있는 값

 

함수형 컴포넌트 → useState라는 함수를 통해 사용

클래스형 컴포넌트   지니고 있는 state

 

props와 비슷하면서 다름

데이터를 내보내는 것이 아닌 해당 컴포넌트 내부에서 데이터를 전달할 때 쓰인다

 

예를 들어보자면 검색창에 글을 입력할 때 글이 변하는 것은 state를 활용해 데이터를 전달한다

컴포넌트의 두가지 선언방식에서 말했듯 class 형 컴포넌트의 경우 state를 지니고 있어 바로 사용할 수 있다

 

useState

배열의 비구조화 할당

배열 안에 들어 있는 값을 쉽게 추출할 수 있는 문법

 

console.log(one); console.log(two)

두 코드의 결과는 동일하다

 

useState

함수형 컴포넌트에서 state 사용하기

내장 Hooks

다음과 같이 작성하며

배열에 첫 번째 원소에는 현재 상태 저장

배열에 두 번째 원소에는 상태를 바꿔주는 setter 함수

함수 인자에는 상태의 초기값

 

useState 함수 인자

 

내보내기 & 불로오기

모듈 (분리한 컴포넌트)를 내보내기(export)

 

내보내기 & 불러오기

모듈(분리한 컴포넌트)를 불러오기 (import)

Component의반복

반복되는 형태의 코드

이제 대한 내용을 효율적으로 보여주고 관리하는 방법

 

*Map() 함수

피라미터로 전달된 함수로

배열 내 각 요소를 원하는 규칙에 따라 변환해 그 결과로 새로운 배열 생성

grr.map(callbackFunction(currentValue, index, array), [thisArg])

callbackFunction: 새로운 배열 요소를 처리하는 함수

currentValue : 현재 처리하고 있는 요소

Index : 현재 처리하고 있는 요소의 index 값

array : 현재 처리하고 있는 원본 배열 

 

thisArg : callback 함수 내부에서 사용할 this 레퍼런스

 

배열의 각 요소를 제곱한 새로운 배열 만들기

const numbers = [1,2,3,4,5];
const result = numbers.map(num => num * num);
console.log(result);

numbers : 원본 배열

num : 함수의 피라미터

num * num : 변환 규칙

[1,4,9,16,25]

key가 없을 때 key가 있을 때
Virtual DOM을 비교하는 과정에서
리스트를 순차적으로 비교하면서 변화 감지
Key 값을 이용하여 변화를 빠르게 알아낼 수 있음

 

 

 


React Router(v6) 사용하기

useEffect() Hook 사용하기 - ShowPostList

useMemo() Hook 사용하기 - ShowPost

React에서 폼 다루기 - WritePost


 

MPA? SPA?

 

MAP : Multriple Page Application

MPA : 여러 개의 페이지로 구성된 어플리케이션 

그림처럼 사용자가 새로운 페이지를 요청을 할 때마다 서버에서 미리 준비된 화면을 보여주는 것

 

MPA의 단점 : 상태 유지의 어려움, 불필요한 로딩

mpa 방식대로하면 홈페이지를 이동하거나 새로고침 할 때 전체 페이지를 다시 렌더링하기 때문에 사용자의 인터페이스 에서 사용하고 있는 상태를 유지하기도 번거롭고 바뀌지 않는 부분까지 새로 불러와서 보여주기 때문에 불필요한 로딩이 발생하게 된다

 

그래서 리액트는 첫 요청 시에 딱 한 페이지만 불러오고 페이지 이동 시 기존 페이지 내부를 수정해서 보여주는 방식을 채택하였는데 이것이 바로

SPA(Single Page Application) 방식이다

말그대로 한 개의 페이지로 구성된 어플리케이션을 말한다

 

그런데 웹 페이지는 홈 화면, 게시판 화면, 글쓰기 화면 등등 여러 개의 화면들을 보여줘야 한다

그러면 어떻게 한 개의 페이지로 여러 화면을 보여줄 수 있을까?

spa는 서버에서 사용자에게 제공하는 페이지는 한 종류이지만 해당 페이지에서 로딩된 자바스크립트와 현재 사용자 브라우저의 주소 상태에 따라 다양한 화면을 보여줄 수 있다 

이렇게 다른 주소에 다른 화면을 보여주는 것을 라우팅이라고 한다 우리는 이미 만들어진 라우팅 라이브러리 REACT ROUTER V6를 사용할 것이다

 

 

'STUDY > 멋쟁이사자처럼' 카테고리의 다른 글

JS를 통해 DATA fetch하는 웹 만들기  (0) 2022.08.17
REACT (3)  (0) 2022.08.17
jsx (2)  (0) 2022.08.09
JSX  (0) 2022.08.08
REACT (1)  (0) 2022.08.08