dva model 如何使用takeLatest高阶函数?

Created on 25 Oct 2017  ·  2Comments  ·  Source: dvajs/dva

const model = {
  namespace: 'article',
  state: {
    logger: {
      sortedInfo: {
        order: 'descend',
        columnKey: 'create_time',
      },
    },
  },
  subscriptions: {
    url( {dispatch, history} ) {
      history.listen(( {pathname} ) => {
        const match = pathToRegexp('/article/:cmsid').exec(pathname)
        if (match && match[1]) {
          let cmsid = match[1]
          dispatch({type: 'loadCmsid2Docid', payload: {cmsid}})// 多次调用
          // dispatch({type: 'loadArticleRdmDebugInfo', payload: {cmsid}})// 多次调用
        }
      });
    },
  },
  effects: {
    *loadCmsid2Docid({payload}, {call, put, take, takeLatest}) {
      const docid = yield call(loadCmsid2Docid, payload)

      console.log('startstartstartstartstart')
      let tt1 = yield takeLatest( 'loadCmsid2Docid', model.effects['article/fetchUser'] )
      console.log('tt1tt1tt1tt1tt1tt1tt1', tt1)
      console.log('endendendendendendendend')

    },

    *fetchUser(action) {
      debugger
    },

  },
  reducers: {

  },
}

export default model

请问这段代码,为什么无法使用takeLatest这种高阶函数呢?而且fetchUser函数没有被调用呢,请问哪位老司机可以帮忙指点下?

Most helpful comment

All 2 comments

Woooo! Very nice! The doc I readed is vague. 3Q

Was this page helpful?
0 / 5 - 0 ratings