我試圖建立一個動作,以至於當我做一個AJAX調用話,我可以斷火另一個動作是與從調用返回的數據更新狀態:Redux的異步操作
行動。 JS
import axios from 'axios';
export const setUserTeamsState = (teams) => {
return {
type:'SET_USER_TEAMS',
teams:teams
}
}
export const getUserTeams = (dispatch) => {
return axios.get('http://localhost:7777/getteams')
.then((response) => {
console.log(response.data)
dispatch(setUserTeamsState(response.data))
})
.catch((error) => {
//console.log(error);
});
}
在我的組件
我打電話,像這樣的動作:
this.props.teamActions.getUserTeams()
的getUserTeams
動作觸發關閉很好,因爲我得到從api返回的控制檯日誌,但setUserTeamsState
似乎沒有。我試圖儘可能遵循在線示例,但不知道我在哪裏出錯了?
編輯
這裏是我下面的減速機:
Reducer.js
const initialState = {
userTeams: []
};
const manageTeamsReducer = (state = initialState, action) => {
switch (action.type) {
case 'SET_USER_TEAMS': {
const newState = Object.assign(state, {
userTeams:action.teams
});
return newState;
}
default:
return state;
}
}
export default manageTeamsReducer;
如果actions.js我console.log(dispatch(setUserTeamsState(response.data)))
它返回我的setUserTeamsState
對象,所以我不知道爲什麼它沒有執行。這是否是正確的方法?
你看到控制檯上的任何錯誤?你是否得到任何類型的異常? – mersocarlin
當'SET_USER_TEAMS'被調度時,你的reducer是否被調用? – topher
它看起來像你在初始狀態下將userTeams設置爲一個數組,但在reducer調用中返回並將Object作爲新狀態...... –