Home middleware
Post
Cancel

middleware

๐Ÿ“Œ ๋ฏธ๋“ค์›จ์–ด

๋ฏธ๋“ค์›จ์–ด๋ž€?

์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋น„๋™๊ธฐ ์ž‘์—…์„ ๋‹ค๋ฃฐ ๋•Œ ์†์‰ฝ๊ฒŒ ์ƒํƒœ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์คŒ

๋ฏธ๋“ค์›จ์–ด๋Š”, ์•ก์…˜์ด ๋””์ŠคํŒจ์น˜๋˜์–ด์„œ ๋ฆฌ๋“€์„œ์— ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ์ „์— ์‚ฌ์ „์— ์ง€์ •๋œ ์ž‘์—…๋“ค์„ ์„ค์ •ํ•œ๋‹ค.

๋ฏธ๋“ค์›จ์–ด๋ฅผ ์•ก์…˜๊ณผ ๋ฆฌ๋“€์„œ ์‚ฌ์ด์˜ ์ค‘๊ฐ„์ž๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด๋จ.

๋ฏธ๋“ค์›จ์–ด ๋งŒ๋“ค๊ธฐ

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;
This post is licensed under CC BY 4.0 by the author.

NextJS

CSS grid