๐ ๋ฏธ๋ค์จ์ด
๋ฏธ๋ค์จ์ด๋?
์ํ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋น๋๊ธฐ ์์ ์ ๋ค๋ฃฐ ๋ ์์ฝ๊ฒ ์ํ๊ด๋ฆฌ ํ ์ ์๋๋ก ๋์์ค
๋ฏธ๋ค์จ์ด๋, ์ก์ ์ด ๋์คํจ์น๋์ด์ ๋ฆฌ๋์์ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ์ ์ ์ฌ์ ์ ์ง์ ๋ ์์ ๋ค์ ์ค์ ํ๋ค.
๋ฏธ๋ค์จ์ด๋ฅผ ์ก์ ๊ณผ ๋ฆฌ๋์ ์ฌ์ด์ ์ค๊ฐ์๋ผ๊ณ ์ดํดํ๋ฉด๋จ.
๋ฏธ๋ค์จ์ด ๋ง๋ค๊ธฐ
src/lib/loggerMiddleware.js
1
2
3
const loggerMiddleware = store => next => action =>{
...
}
next : store.dispatch์ ๋น์ทํ ์ญํ
next(action) ํ์๋ ๋ฆฌ๋์๋ก ๋๊ธฐ๊ฑฐ๋ ๋ฏธ๋ค์จ์ด๊ฐ ๋์๋ค๋ฉด ๋ฏธ๋ค์จ์ด๊ฐ ์ฒ๋ฆฌ๋๋๋ก ์งํ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const loggerMiddleware = (store) => (next) => (action) => {
// ํ์ฌ ์คํ ์ด ์ํ๊ฐ ๊ธฐ๋ก
console.log("ํ์ฌ ์ํ", store.getState());
// ์ก์
๊ธฐ๋ก
console.log("์ก์
", action);
// ์ก์
์ ๋ค์ ๋ฏธ๋ค์จ์ด, ํน์ ๋ฆฌ๋์๋ก ๋๊น
const result = next(action);
// ์ก์
์ฒ๋ฆฌ ํ์ ์คํ ์ด ์ํ ๊ธฐ๋ก
console.log("๋ค์ ์ํ", store.getState());
console.log("\n"); // ๊ธฐ๋ก ๊ตฌ๋ถ์ ์ํ ๋น์ด์๋ ์ค ํ๋ฆฐํธ
return result; // ์ฌ๊ธฐ์ ๋ฐํํ๋ ๊ฐ์ store.dispatch(ACTION_TYPE) ํ์๋์ ๊ฒฐ๊ณผ๋ก ์ค์ ๋ฉ๋๋ค
};
export default loggerMiddleware; // ๋ถ๋ฌ์์ ์ฌ์ฉ ํ ์ ์๋๋ก ๋ด๋ณด๋ด์ค๋๋ค.
store.js
1
2
3
4
5
6
7
8
9
import { createStore, applyMiddleware } from "redux";
import modules from "./modules";
import loggerMiddleware from "./lib/loggerMiddleware";
// ๋ฏธ๋ค์จ์ด๊ฐ ์ฌ๋ฌ๊ฐ์ธ๊ฒฝ์ฐ์๋ ํ๋ผ๋ฏธํฐ๋ก ์ฌ๋ฌ๊ฐ๋ฅผ ์ ๋ฌํด์ฃผ๋ฉด ๋ฉ๋๋ค. ์: applyMiddleware(a,b,c)
// ๋ฏธ๋ค์จ์ด์ ์์๋ ์ฌ๊ธฐ์ ์ ๋ฌํ ํ๋ผ๋ฏธํฐ์ ์์๋๋ก ์ง์ ๋ฉ๋๋ค.
const store = createStore(modules, applyMiddleware(loggerMiddleware));
export default store;