在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 不同頁面觸發(fā)同一個effect方法,傳的payload參數(shù)各不一樣,是不是每個頁

不同頁面觸發(fā)同一個effect方法,傳的payload參數(shù)各不一樣,是不是每個頁面都要駐留一套state里的對象全集?

超級簡單代碼:

export default {

  namespace: 'sample',

  state: {
        A:[],//查詢結(jié)果
        B:'',//查詢條件B
        C:'',//查詢條件C
        D:'',//查詢條件D
  },

  effects: {
        *query ({ payload }, { call, put }) {
            
            //根據(jù)B,C,D查到A
            const data = yield call(query, payload)
            
      if (data.success) {
        yield put({
          type: 'querySuccess',
          payload: {
            A:data.A,
            B:payload.B,
            C:payload.C,
            D:payload.D,
          },
        })
      }
    },
  },

  reducers: {
      querySuccess (state, action) {        
      return { ...state, ...action.payload }
    },
  },

}

問題:
我在不同的頁面,dispatch觸發(fā)*query方法時的payload參數(shù)不盡相同
比如A頁面我dispatch這個payload里只包含B,C.
而我想繼續(xù)沿用state里原來D的值,所以不提交D
那么就會出現(xiàn)

clipboard.png
由此我不得不被迫在每個要dispatch的頁面中,全部把B C D作為payload提交進(jìn)query去,盡管有的參數(shù)對于這個頁面一點(diǎn)用處都沒有,僅僅為了存儲

換句話說我在另外一個模塊X要調(diào)用這個query進(jìn)行查詢,我就是為了QUERY,根本不想提交任何參數(shù),直接使用state里默認(rèn)存儲的BCD參數(shù)。那X模塊也不得不存儲B C D這樣的參數(shù)才能查詢,那多麻煩??!

回答
編輯回答
有你在

可以使用select, 看看這個就懂了https://github.com/dvajs/dva/...

2017年10月21日 08:01