일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 마사지
- 자동완성
- webpack.config.js
- ES6
- 여행
- JavaScript
- Hooks
- 유효성검사
- plugin
- js
- 맛사지
- 특수문자
- 세부
- 중고나라
- autocomplate
- 삼성무선청소기제트
- 정직하게사세요
- 네이버페이사기
- 중고거래사기
- REACT
- 구분
- 막탄
- 스쿠버다이빙
- 정규식
- 중고나라사기
- 해외여행
- Webpack
- 스노쿨링
- 사기
- Today
- Total
Ryu.log
[ React redux 01 ] Redux의 소개 본문
01. Redux의 소개
React컴포넌트 구조가 위와 같다고 할때, 하위 컴포넌트에서 상위 컴포넌트에 props를 전달 하기 위해서는
하위 컴포넌트에서 상위 컴포넌트로 여러 컴포넌트를 거쳐서 props를 전달하게 된다.
이런식으로 컴포넌트에 props를 전달하면 상당히 비효율 적이다. 이런식으로 전달하게 되면 불필요한 렌더링이 일어날 수 있으며
또한 최상위 컴포넌트인 App 컴포넌트 에서는 상태관리 로직이 너무 많아서 코드가 엄청나게 길어질 수도있다.
이러한 것들을 Redux라는 상태관리 도구를 사용하면 매우 매끄럽게 해결 가능하다.
Redux는 위 그림과 같이 Store라는 객체 내부에 상태를 담아서 모든 상태관리를 해준다.
상태에 어떤 변화를 일으켜야 할 때는 액션(action)이라는 것을 스토어에 전달한다, 액션은 객체 형태로 되어있으며,
상태를 변화시킬 때 이 객체를 참조하여 변화를 일으킨다. 액션을 전달하는 과정은 디스패치(dispatch)라 한다.
스토어가 액션을 받으면 리듀서(reducer)가 전달받은 액션을 기반으로 상태를 어떻게 변경시켜야 할지 정한다.
액션을 처리하면 새 상태를 스토어에 저장한다.
스토어 안에 있는 상태가 바뀌면 스토어를 구독하고 있는 컴포넌트에 바로 전달한다. 부모 컴포넌트로 props를 전달하는 작업은 생략하며,
Redux에 연결하는 함수를 사용하여 컴포넌트를 스토어에 구독(subscribe) 시킨다.
갑자기 새로운 용어들을 접하여 조금 헷갈릴 수 있으니 용어들을 정리해보자.
- 스토어 : 애플리케이션의 상태 값들을 내장하고 있다.
- 액션 : 상태 변화를 일으킬 때 참조하는 객체
- 디스패치 : 액션을 스토어에 전달하는 것을 의미한다.
- 리듀서 : 상태를 변화시키는 로직이 있는 함수
- 구독 : 스토어 값이 필요한 컴포넌트는 스토어를 구독한다.
02. Redux 사용
우선 CDN을 이용하여 JSBin에서 리덕스를 불러와보자. HTML 영역의 코드에서 <body>...</body> 사이에 아래코드를입력해보자.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/redux/3.6.0/redux.js"></script>
</body>
</html>
이렇게 파일을 불러오면 JavaScript 영역에서 리덕스를 사용할 수 있다. 실습과정에서는 DOM을 사용하지 않으니
HTML과 Output 영역은 비활성화 하고 JavaScript와 Console 영역만 활성화 시켜주자.
계속 진행하기 전에 먼저 리덕스를 잘 불러왔는지 확인 해보자. JavaScript영역에서 console.log(Redux)를 입력하고 오른쪽 Run 버튼을 눌러보자.
위 그림처럼 Redux의 정보가 console에 잘 찍힌다면 제대로 불러와진 것이다.
이 글은 Velopert님의 책을 실습하며 공부한 자료입니다.
'Prev-content' 카테고리의 다른 글
[ React redux 03 ] 변화를 일으키는 함수, 리듀서 (0) | 2018.09.07 |
---|---|
[ React redux 02 ] 액션과 액션 생성함수 (0) | 2018.09.04 |
[ NodeJS 10 ] console 객체 (0) | 2018.08.06 |
[ NodeJS 09 ] global 객체 (0) | 2018.08.02 |
[ NodeJS 08 ] 모듈 시스템 (0) | 2018.07.30 |