如何在另一个动作成功后调用redux动作?
问题描述:
所以我有一个auth
相关的减速建立这样的:如何在另一个动作成功后调用redux动作?
export default function reducer(state = initialState, action = {}) {
switch (action.type) {
case LOAD:
return {
...state,
loading: true,
}
case LOAD_SUCCESS:
return {
...state,
loading: false,
loaded: true,
jwt: action.jwt,
}
case LOAD_FAIL:
return {
...state,
loading: false,
loaded: false,
error: true,
errorMessage: action.error,
}
case LOGIN:
return {
...state,
loaded: false,
loggingIn: true,
}
case LOGIN_SUCCESS:
return {
...state,
loaded: true,
loggingIn: false,
jwt: jwtDecode(action.result.token),
}
case LOGIN_FAIL:
return {
...state,
loggingIn: false,
user: null,
error: true,
errorMessage: action.error,
}
case LOGOUT:
return {
...state,
loggingOut: true,
}
case LOGOUT_SUCCESS:
return {
...state,
loggingOut: false,
user: null,
jwt: null,
}
case LOGOUT_FAIL:
return {
...state,
loggingOut: false,
error: true,
errorMessage: action.error,
}
default:
return state
}
}
如果负载之前存储的(无论是饼干或JWT)AUTH和登录/注销的负荷是不言自明。
我需要在成功加载或登录后触发一些进一步的操作。
我想执行一个GET请求来获取一些只有在登录后才可用的私有数据,并将这些私有数据存储在redux存储中以供应用程序的各个部分使用。我怎么做?
答
您应该使用async actions来完成。
你必须编写异步动作创建器,它会调用多个动作。
类似的东西:
function multipleAtions() {
return (dispatch) => {
dispatch(load_action);
return fetch(`http://some_request_here`)
.then(() => dispatch(another_action);
}
}
你读了有关在终极版文档[异步操作(http://redux.js.org/docs/advanced/AsyncActions.html)的部分?这解释得很好。 –