【发布时间】:2018-06-19 02:56:47
【问题描述】:
我正在开发我的第一个 react/redux 应用程序,但我不确定应该在哪里调用 sessionStorage.setItem()。我目前正在从 loginUserSuccess() 操作存储用户凭据,但我不确定这是我应该这样做的地方。此外,我正在使用 fetch 发出请求,并希望将用户的 authToken 添加到所有请求中。我正在研究fetch-intercept,但没有提供太多用于修改标头的文档。
actions/loginActions.js
export function loginUser(user) {
return function(dispatch) {
return LoginApi.login(user).then(creds => {
dispatch(loginUserSuccess(creds));
}).catch(error => {
throw(error);
});
};
}
export function loginUserSuccess(creds) {
sessionStorage.setItem('credentials', JSON.stringify(creds));
return {
type: types.LOGIN_USER_SUCCESS,
state: creds
}
}
api/packageApi.js
class PackageApi {
// called on successful login
static getAllPackages() {
const request = new Request('/my/endpoint', {
method: 'GET',
headers: new Headers({
'AUTHORIZATION': `Bearer ${JSON.parse(sessionStorage.credentials).authToken}`
})
});
return fetch(request).then(response => {
return response.json();
}).catch(error => {
return error;
});
}
}
export default PackageApi;
【问题讨论】:
标签: reactjs react-redux fetch-api session-storage