미들웨어는 객체 대신에 액션생성함수를 작성할 수 있게 한다.
특정 액션이 발생하기 전에 조건을 주거나, 어떤 행동을 사전에 처리할 수 있다.
//___미들웨어 템플릿___
const middleware = store => next => action => {
// 하고 싶은 작업...
}
//___function으로 작성하면 다음과 같다___
function middleware(store) {
return function (next) {
return function (action) {
// 하고 싶은 작업...
};
};
};
리덕스에서 비동기 작업을 처리 할 때 가장 많이 사용하는 미들웨어.
특정 작업을 나중에 하도록 미루기 위해서 함수형태로 감싼 것.
const getComments = () => (dispatch, getState) => {
// 이 안에서는 액션을 dispatch 할 수도 있고
// getState를 사용하여 현재 상태도 조회 할 수 있습니다.
const id = getState().post.activeId;
// 요청이 시작했음을 알리는 액션
dispatch({ type: 'GET_COMMENTS' });
// 댓글을 조회하는 프로미스를 반환하는 getComments 가 있다고 가정해봅시다.
api
.getComments(id) // 요청을 하고
.then(comments => dispatch({ type: 'GET_COMMENTS_SUCCESS', id, comments })) // 성공시
.catch(e => dispatch({ type: 'GET_COMMENTS_ERROR', error: e })); // 실패시
};
프로미스(Promise) 생성자 함수는 콜백 함수를 인수로 전달받는다.
비동기 처리를 수행하는 것은 이 콜백함수다.
비동기 처리가 수행되면 비동기 처리 결과에 따라 프로미스의 상태가 변경된다.
선언 단계와 초기화 단계가 분리되어 진행되므로 발생하는 구간
const
의 tdz 구간: 선언 및 초기화 전 줄까지 → const
는 선언한 후에 사용
let
의 tdz 구간: 선언 전 줄까지 → let
도 선언한 후에 사용
반대로
var
, function
, import
는 TDZ 영향을 받지 않아 현재 스코프에서 호이스팅 된다.
*참조
React 기초 <변수 선언 → 초기화>
JS 변수와 TDZ
서명된 토큰은 그 안에 포함된 클레임의 무결성 을 확인할 수 있는 반면 암호화된 토큰 은 이러한 클레임을 다른 당사자로부터 숨길 수 있습니다. 공개/개인 키 쌍을 사용하여 토큰에 서명할 때 서명은 개인 키를 보유하고 있는 당사자만 서명했음을 증명합니다.