2017-10-09 114 views
0

我有動作創建者的actions/index.js文件,而且我正在使用redux-thunk作爲中間件。這是代碼:Redux-thunk操作

export const fetchUser =() => async dispatch => { 
    const res = await axios.get('/api/current_user'); 
    dispatch({type: FETCH_USER, payload: res.data}); 
}; 

export const handleToken = (token) => async dispatch => { 
    const res = await axios.post('/api/stripe/', token); 

    dispatch({type: FETCH_USER, payload: res.data}); 
}; 

export const submitSurvey = (values, history) => async dispatch => { 
    const res = await axios.post('/api/Surveys', values); 

    history.push('/Surveys'); 
    dispatch({type: FETCH_USER, payload: res.data}); 
}; 

export const scrollMovement = (scrollValue) => dispatch => { 
    dispatch({type: SCROLL_MOVE, payload: scrollValue}) 
}; 

export const selectConfig = (id) => dispatch => { 
    dispatch({type: "SELECT_CONFIG", payload: id}) 
}; 

我有一個問題。我是否應該編寫動作創建器,它不會像我編寫hadleToken,submitSurvey和fetchUser動作創建器那樣以相同樣式向外部API發送請求(例如scrollMovement和selectConfig)?

我希望你能理解我的問題。如果不是,請添加評論,我會解釋。

回答

0

對於數據的同步流,您只需要像往常一樣返回一個對象,因爲在生成調度之前,thunk中間件在類型函數中攔截了操作。

所以對於scrollMovementselectConfig你沒有返回的功能,因爲這些跟隨的數據

export const scrollMovement = scrollValue => { 
    return {type: SCROLL_MOVE, payload: scrollValue} 
}; 

export const selectConfig = id => { 
    return {type: "SELECT_CONFIG", payload: id} 
}; 
+1

的同步流動'dispatch'是不確定的,但 –

+0

'在這種情況下dispatch'將是不確定的,是的 – Remzes

+1

對不起,你是對的我編輯我的帖子,你只需要返回一個對象,這是你的動作,如果你正在跟隨一個同步流。 –