Dva: рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдЖрдЙрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕реНрдЯреЛрд░ рдореЗрдВ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рд╛рдлрд╝ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдиреЗрд╕реНрдЯреЗрдб рд░реВрдЯ рдкреЗрдЬ рдХреЛ рд░реАрдлреНрд░реЗрд╢ рдХрд░рддреЗ рд╕рдордп рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреА рдЬрд╛рддреА рд╣реИред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 9 рдлрд╝рд░ре░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dvajs/dva

рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди, рд╕рд┐рд╕реНрдЯрдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрддрд┐рдо рдСрдкрд░реЗрд╢рди рдбреЗрдЯрд╛ рдХреЛ рдмрд░рдХрд░рд╛рд░ рд░рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЙрдЧ рдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдбреЗрдЯрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИред рдПрдХ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдкреВрд░реЗ рд╕реНрдЯреЛрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рд╛рдлрд╝ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ?

рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореЗрд░рд╛ рд╕рд┐рд╕реНрдЯрдо рд░реВрдЯрд┐рдВрдЧ рдиреЗрд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдкрд░ рдЬрд╛рдПрдБ: http://localhost :8000/main/reposред рдЗрд╕ рд╕рдордп, рдЬрдм f5 рддрд╛рдЬрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреВрд░рд╛ рдкреГрд╖реНрда рдЦрд╛рд▓реА рд╣реЛрддрд╛ рд╣реИред рдХрдВрд╕реЛрд▓: рдЕрдирдХреЙрдЯреЗрдб рд╕рд┐рдВрдЯреИрдХреНрд╕ рддреНрд░реБрдЯрд┐: рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЯреЛрдХрди <, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ .js:1, рдФрд░ рдлрд┐рд░ рдореИрдВ рдХрдВрд╕реЛрд▓ рдкрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛...

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@bjwulin рдиреЗ рдЕрднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИред @sorrycc рдиреЗ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд░реЗрдбреНрдпреВрд╕рд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ 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 рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдирдпрд╛ рд░рд╛рдЬреНрдп рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрджрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд▓реЙрдЧрдЖрдЙрдЯ рд╣реИ, рддреЛ рдореВрд▓ рд╕реНрдерд┐рддрд┐ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред рдпрджрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд▓реЙрдЧрдЖрдЙрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░рд╛рдкреНрдд рд╕реНрдерд┐рддрд┐ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреАред
рдЕрдм рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдмреЗрд╢рдХ, рд╣рдо рдореВрд▓ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реАрдзреЗ 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 рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рддреНрд░реБрдЯрд┐ рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдЯреЛрд░ рдХрд╛ рдореВрд▓реНрдп рдкрдврд╝рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдореЗрд░рд╛ рдореЙрдбрд▓ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ, рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдореЗрдВ рдмрджрд▓рдирд╛ рдЕрд╕рдВрднрд╡ рд▓рдЧрддрд╛ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

BenAnn picture BenAnn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

itiwll picture itiwll  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pengfeiWang picture pengfeiWang  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

MiaoXingGua picture MiaoXingGua  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wm3445 picture wm3445  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ