1 回答

TA貢獻1852條經驗 獲得超7個贊
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所有的源代碼,默認情況下redux只能dispatch一個plain object,例如:
dispatch({
type: 'SOME_ACTION_TYPE',
data: 'xxxx'
});
使用 redux-thunk 之后,可以dispatch一個函數了,這個函數會接收dispatch, getState作為參數,在這個函數里你就可以干你想干的事情,在任何地方隨意dispatch了,例如下面這個ajax請求:
dispatch(function (dispatch) {
$.get('/api/users', function(users) {
dispatch({
type: 'FETCH_USERS_SUCCESS',
users: users,
});
});
});
添加回答
舉報