1 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
function createThunkMiddleware(extraArgument) {
return ({ dispatch, getState }) => next => action => {
if (typeof action === 'function') {
return action(dispatch, getState, extraArgument);
}
return next(action);
};
}
const thunk = createThunkMiddleware();
thunk.withExtraArgument = createThunkMiddleware;
export default thunk;
這是redux-thunk所有的源代碼,默認(rèn)情況下redux只能dispatch一個(gè)plain object,例如:
dispatch({
type: 'SOME_ACTION_TYPE',
data: 'xxxx'
});
使用 redux-thunk 之后,可以dispatch一個(gè)函數(shù)了,這個(gè)函數(shù)會(huì)接收dispatch, getState作為參數(shù),在這個(gè)函數(shù)里你就可以干你想干的事情,在任何地方隨意dispatch了,例如下面這個(gè)ajax請(qǐng)求:
dispatch(function (dispatch) {
$.get('/api/users', function(users) {
dispatch({
type: 'FETCH_USERS_SUCCESS',
users: users,
});
});
});
添加回答
舉報(bào)