본문 바로가기

영어쌤의 놀이방_ 수퍼.코드.파티/리액트와 장고로 회원가입 관리 만들어욤

(3.1) Implementing React_ Redux & HTTP. 영어쌤이 만드는 회원가입, 인증[CRUD] 만들어욤! 리액트와 파이썬 장고

반응형

(3.1) Implementing React_ Redux & HTTP.
영어쌤이 만드는 회원가입, 인증[CRUD] 만들어욤! 리액트와 파이썬 장고

안녕하세요? 웹개발 하는 영어쨈 죠니 입니다.

이번엔 지난 포스팅에서 마지막에 잠시 언급한 대로 Redux를 다룰 예정입니다.

Implement Redux

- Redux store 추가 
- route reducer들 만들기
-- 에러 
-- 메세지(react alert)(pop-up error message)(서버사이드 또는 클라이언트 사이드에서 만든 메세지가 뜨도록 하는 것)
- But!!!!! Redux에 대해서는 너무 자세히 탐구하진 않습니다. 활용 및 응용을 통해 인증(Authentication)을 만드는 것이 목적입니다.

Yeah, Let's Go! It's Double or Nothing!

(1) RemoteDev DevTools (크롬 앱 설치 및 적용)

- 크롬 앱스토어에서 개발자모드로 사용이 가능한 툴 입니다. 설치해 주세요.
-- 링크 바로가기

- 확장프로그램이 설치된 것을 보실 수 있습니다.
- 그러면 크롬 개발자모드를 실행합니다.

- 개발자모드에서도 위와 같이 Redux 메뉴를 확인할 수 있습니다.

크롬 개발자모드 Redux 모드

- 아직 아무런 작업도 해 주지 않았기 때문에 위와 같은 에러 화면이 출력됩니다.

(2) Redux와 React-redux 설치하기

- 다음 명령어를 통해 리덕스와 리액트-리덕스를 설치합니다.

$ npm i redux react-redux redux-thunk redux-devtools-extension

(2.1) React-redux는 왜 필요한 거에요?
- Redux와 React는 서로 완전히 분리되어 있습니다. 단지, 리액트와 함께 사용하는 것이 매우 보편화 되어 있는 것은 사실입니다.
- 그래서 필요한 것이 React-redux 패키지 인데, 리액트와 리덕스를 함께 엮는 용도로 사용됩니다.

(2.2) redux-thunk 는 왜 쓰는 건가요?
- redux-thunk는 미들웨어로 쓰입니다.
- 여러분이 Asynchronous Request(비동기 요청)을 할 수 있습니다.

(2.3) redux-devtools-extension
- 작업 및 구현시에 절차에 따라 모든 것들을 구성하는 것 대신 이 redux-devtools-extension을 쓰면 작업 시간을 단축시킬 수 있습니다.

(3) 실행

다음의 명령어를 다시 실행해 주세요.(가상환경이라는 것을 잊지 말아주세요!!!)
- 가상환경으로 어떻게 들어가더라...?????
(1) Basic REST API 극 초반부에 있습니다.(주의! 가상환경에서 작업시에는 설치한 것들이 모두 해당 가상 영역 안에 있으므로 평상 모드로 빠져나올 경우엔 그 동안 설치했던 것을 사용하지 못하므로 다시 가상 영역으로 갑시당!)

$ npm run dev

결과

(4) /leadmanager/frontend/src/store.js 파일 생성 및 작성하기

// store.js
import { createStore, applyMiddleware } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension'
import thunk from 'redux-thunk'
import rootReducer from './reducers';

const initialState = {};

const middleware = [thunk];

const store = createStore(
	rootReducer,
    initialState,
    composeWithDevTools(applyMiddleware(...middleware))
);

export default store;

(5) /leadmanager/frontend/src/reducer/index.js 파일 생성 및 작성

- store.js의 10번째 줄의 store를 사용하는 방법 입니다.(rootReducer를 먼저 만들고...)
- 만든다고 해서 거창한 것은 아닙니다. 그저 지금까지 해 왔던 그대로 합니다.
- src 폴더 내에 reducer 폴더를 만들고 그 안에 index.js 파일을 만들어 작성합니다.
- 이 reducer는 기본적으로 모든 다른 reducer들이 만나는 곳 입니다.

// /leadmanager/frontend/src/reducer/index.js
import { combineReducers } from 'redux';

export default combineReducers({});

(6) /src/components/App.js에 react-redux 추가

- 우리는 react-redux 로부터 store와 provider 기능이 필요합니다.
- 앞서 언급했듯이 React-redux는 그 두 가지를 integrate(통합하다)즉, 통합시키기 위한 것 입니다.

// App.js
import ...

import { Provider } from 'react-redux';
import store from '../store';

class App extends Component {
	render(){
    	return(
        	<Provider store={store}>
            	...
            </Provider>
        );
    }
}

수정 및 결과

- 위와 같이 Provider와 store를 가져오고, return쪽 코드는 <Provider></Provider>로 감싸 주세요.
- 결과는 오른쪽 개발자모드 콘솔 화면과 같습니다.
- 아직 Reducer를 하나도 만들지 않아 오류가 뜹니다.

(7) 크롬 개발자모드 Redux 작업 환경 동작 확인

- 이전 작업들을 문제 없이 진행했다면 위와 같은 결과를 볼 수 있습니다.

(8) index.js 작성 진행

// /leadmanager/frontend/src/reducer/index.js
import { combineReducers } from 'redux';
import leads from './leads';

export default combineReducers({
	leads
});

(9) /reducers/leads.js 파일 생성 및 작성

- 작성할 내용은 get leads, add leads, delete leads와 같은 것들이 되겠습니다.

// leads.js
import { GET_LEADS } from '../actions/types.js';

(10) /src/actions/types.js 파일 생성 및 작성하기

- type들은 기본적으로 Constant(정수)들 입니다.

// /src/actions/types.js
export const GET_LEADS = "GET_LEADS";

(11) /reducers/leads.js 파일 생성 및 작성 재진행

// leads.js
import { GET_LEADS } from '../actions/types.js';

const initialState = {
    leads: []
};

export default function(state = initialState, action) {
	switch(action.type) {
    	case GET_LEADS:
        	return {
            	...state,
                leads: action.payload
            };
          default:
          	return state;
    }
}

(12) /src/actions/leads.js 파일 생성

- 이 파일엔 모든 HTTP 요청에 관한 내용을 작성할 것 입니다.

 

(13) Axios 설치

- 다음의 명령어를 통해 axios를 설치해 주세요.

$ npm i axios

결과

- 그리고 다시 서버를 실행시켜 주세요.

$ npm run dev

 

우선 여기까지 하고 스압이 너무 심해서 다음 포스팅으로 넘길게요!!

다음 포스팅의 시작 내용은 

(14) /src/actions/leads.js 파일 작성

입니다!!! 잠시 후에 봐욤!

Stay tuned for the next episode of Web development by the English teacher JOHNNYCLUB!!!

반응형