Dva: рдорд╛рд░реНрдЧ рдХреЗ рддрд╣рдд рдореЙрдбрд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ

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

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

*clearModel({ payload }, { put }) {
    yield put({
        type: 'clear',
    });
},

рдЙрд╕реА рд╕рдордп, рд░реЗрдбреНрдпреВрд╕рд░ рдореЗрдВ рдПрдХ рдирдИ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВ:

clear() {
    return {};
},

рдлрд┐рд░ рдШрдЯрдХ рдХреЗ рдШрдЯрдХWillUnMount рдореЗрдВ рдкреНрд░реЗрд╖рдг рдХрд░реЗрдВ:

dispatch({
    type: 'model/clearModel',
    payload: {}
});

рдореИрдВ рдЖрдк рд▓реЛрдЧреЛрдВ рд╕реЗ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореЗрд░реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ? рдЗрд╕реЗ рд▓рд┐рдЦрдирд╛ рдереЛрдбрд╝рд╛ рдЧрд▓рдд рд▓рдЧрддрд╛ рд╣реИред

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

@sorrycc рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЧрдП рд▓рд┐рдВрдХ рдХреЛ 404 . рдорд┐рд▓рд╛

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@hanxiansen
рдПрдХ рд▓реЗрдЦрди рд╡рд┐рдзрд┐ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рд╡рд╣ рд╣реИ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдореЙрдбрд▓ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рдореЗрдВ рд╕реБрдиреЛ ((рд╕реНрдерд╛рди)) рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдорд╛рд░реНрдЧ рдХрд╛ рдиреНрдпрд╛рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрджрд┐ рдпрд╣ рд╕рдВрдкрд╛рджрди рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ , рдпрджрд┐ рдпрд╣ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореЗрд░рд╛ рдЕрдкрдирд╛ рдЕрднреНрдпрд╛рд╕ рдЙрдкрдпреБрдХреНрдд рд╣реИ рдпрд╛ рдирд╣реАрдВ)ред рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

..........
  state: {
    topicData: {},
    topicId: '',
  },

  subscriptions: {

    setup ({ dispatch, history }) {
      history.listen((location) => {
        const match = pathToRegexp('/topic/:id/edit').exec(location.pathname)
        if (match) {
          dispatch({
            type: 'getTopic',
            payload: { id: match[1] },
          })
        } else {
          dispatch({
            type: 'updateState',
            payload: { topicData: {}, topicId: '' },
          })
        }
      })
    },

  },

..........
  effects: {
    * getTopic ({ payload }, { call, put }) {
      const accesstoken = localStorage.getItem('accesstoken')
      let params = { accesstoken }
      params = Object.assign(params, payload)
      let data = yield call(getTopic, params)
      console.log(data)
      if (data.success) {
        data = { topicData: data.data, topicId: data.data.id }
        // yield put({
        //   type: 'setTopicId',
        //   payload: { topicId: payload.id },
        // })
        yield put({ type: 'updateState',
          payload: data,
        })
      }
    },
.......
},

  reducers: {
     ........
    updateState (state, { payload }) {
      return {
        ...state,
        ...payload,
      }
    },

  },

рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ, рд░рд╛рдЬреНрдп рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд░реЗрдбреНрдпреВрд╕рд░ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рд╕рдВрдкрд╛рджрди рдФрд░ рдирдпрд╛ рддрд░реНрдХ рдореЛрдбрд▓ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдХреЛ рдореЙрдбрд▓ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреГрдкрдпрд╛ https://github.com/dvajs/dva/blob/master/packages/dva-example- рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╡рд┐рдзрд┐ рджреЗрдЦреЗрдВред

@sorrycc рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЧрдП рд▓рд┐рдВрдХ рдХреЛ 404 . рдорд┐рд▓рд╛

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

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

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

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

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

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

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