Dva: ์‹œ์Šคํ…œ์ด ๋กœ๊ทธ์•„์›ƒํ•œ ํ›„ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์˜ ๋ช…๋ น๋ฌธ์ด ์ €์žฅ์†Œ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šธ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ค‘์ฒฉ ๊ฒฝ๋กœ๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๊ณ ์น  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 02์›” 09์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dvajs/dva

์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ์‹œ์Šคํ…œ์€ ๊ธฐ๋Šฅ์˜ ๋งˆ์ง€๋ง‰ ์ž‘์—… ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜์ง€๋งŒ ๋กœ๊ทธ์•„์›ƒํ•œ ํ›„ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๊ณ  ์ด์ „ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ์ „ํžˆ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์˜ ๋ช…๋ น๋ฌธ์ด ์ „์ฒด ์ €์žฅ์†Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ?

๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์‹œ์Šคํ…œ ๋ผ์šฐํŒ…์€ ์ค‘์ฒฉ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฌธ: http://localhost :8000/main/repos ์ด ๋•Œ f5๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๋ฉด ์ „์ฒด ํŽ˜์ด์ง€๊ฐ€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ˜์†”: Uncaught SyntaxError: Unexpected token <, index .js:1, ๊ทธ๋ฆฌ๊ณ  ์ฝ˜์†”์—์„œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค...

question

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@bjwulin ์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. @sorrycc ๊ฐ€ ํฌ๊ฒŒ ๋งํ•œ onReducer ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋‚ด ์ดํ•ด๋Š” onReducer๊ฐ€ ์ „์—ญ ์ž‘์—…๊ณผ ์ƒํƒœ๋ฅผ ๊ฐ€๋กœ์ฑ„๊ณ  ์ƒˆ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” ์•ก์…˜์ด โ€‹โ€‹๋กœ๊ทธ์•„์›ƒ์ด๋ฉด ์›๋ž˜ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€๊ณ , ์•ก์…˜์ด ๋กœ๊ทธ์•„์›ƒ์ด ์•„๋‹ˆ๋ฉด ์ˆ˜์‹  ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ ๋ฌธ์ œ๋Š” ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  index.js์— ์›๋ž˜ ์ƒํƒœ๋ฅผ ์ง์ ‘ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋น„์ฆˆ๋‹ˆ์Šค ๋ณ€ํ™”์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ์ƒํƒœ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด index.js์— ์™€์„œ ํ•ด๋‹น ์ดˆ๊ธฐ ์ƒํƒœ๋„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋ธ์—์„œ ์ง์ ‘ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๋” ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋“œ ์‡ผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

const models=[];
models.push(require('./models/exhibit'));
models.push(require('./models/user'));
const initialState={};
models.forEach((m)=>initialState[m.namespace]=m.state);
const undo = r => (state, action) => {
  const newState = r(state, action);
  if (action.type == 'user/logoutOnlyStatus') {
    return {
      routing: newState.routing,
      ...initialState
    }
  }
  else {
    return newState
  }
};
const app=dva({
  onError(e){
    console.log(e)
  },
  onReducer: undo
});
app.model(require('./models/exhibit'));
app.model(require('./models/user'));
app.router(require('./router'));
app.start('#root');

๋ชจ๋“  3 ๋Œ“๊ธ€

ํ•˜๋‚˜์˜ ๋ช…๋ น๋ฌธ์ด ์ „์ฒด ์ƒ์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ง€์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

onReducer๋กœ ์ž‘์—… ๊ฐ€๋กœ

๊ทธ๋Ÿผ ์ฝ˜์†”์— ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์•ˆ๋ณด์ด๋„ค์š”...

index.js ์ด /index.js ๋ณ€๊ฒฝ๋จ

@bjwulin ์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. @sorrycc ๊ฐ€ ํฌ๊ฒŒ ๋งํ•œ onReducer ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋‚ด ์ดํ•ด๋Š” onReducer๊ฐ€ ์ „์—ญ ์ž‘์—…๊ณผ ์ƒํƒœ๋ฅผ ๊ฐ€๋กœ์ฑ„๊ณ  ์ƒˆ ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ๋Š” ์•ก์…˜์ด โ€‹โ€‹๋กœ๊ทธ์•„์›ƒ์ด๋ฉด ์›๋ž˜ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€๊ณ , ์•ก์…˜์ด ๋กœ๊ทธ์•„์›ƒ์ด ์•„๋‹ˆ๋ฉด ์ˆ˜์‹  ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ด์ œ ๋ฌธ์ œ๋Š” ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  index.js์— ์›๋ž˜ ์ƒํƒœ๋ฅผ ์ง์ ‘ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋น„์ฆˆ๋‹ˆ์Šค ๋ณ€ํ™”์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ์ƒํƒœ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด index.js์— ์™€์„œ ํ•ด๋‹น ์ดˆ๊ธฐ ์ƒํƒœ๋„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋ธ์—์„œ ์ง์ ‘ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๋” ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋“œ ์‡ผ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

const models=[];
models.push(require('./models/exhibit'));
models.push(require('./models/user'));
const initialState={};
models.forEach((m)=>initialState[m.namespace]=m.state);
const undo = r => (state, action) => {
  const newState = r(state, action);
  if (action.type == 'user/logoutOnlyStatus') {
    return {
      routing: newState.routing,
      ...initialState
    }
  }
  else {
    return newState
  }
};
const app=dva({
  onError(e){
    console.log(e)
  },
  onReducer: undo
});
app.model(require('./models/exhibit'));
app.model(require('./models/user'));
app.router(require('./router'));
app.start('#root');

@zhangdistephen onReducer๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” store์˜ ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.๋‚ด ๊ฒƒ์€ ๋ชจ๋ธ์„ ๋น„๋™๊ธฐ์‹์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™๊ธฐ์‹์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰