我有authActions.js中生成的变量user_id和token,但我需要在不同的js文件中重复使用它们。
如何在生成后将其存储在会话中,并在注销时将其删除?
export function loginUser(email, password) {
return function (dispatch) {
return axios.post(SIGNIN_URL, { email, password }).then((response) => {
var { user_id, token } = response.data;
dispatch(authUser(user_id, token)); // here I dispatch the values to authUser const in the same file
onSignIn(user_id);
}).catch((error) => {
dispatch(addAlert("Could not log in."));
});
};
}
export const authUser = (user_id, token) => {
return {
type: 'AUTH_USER',
user_id,
token
}
}
我的authReducer.js
var defaultState = {
user_id: undefined,
token: undefined
}
module.exports = (state=defaultState, action) => {
switch(action.type) {
case 'AUTH_USER':
return {
user_id: action.user_id,
token: action.token
}
case 'UNAUTH_USER':
return {
user_id: undefined,
token: undefined
};
default:
return state;
}
}
这是我的jobsAction.js,我想使用它们
export function createJob(title, company, avatar, description ) {
return function (dispatch) {
return axios.post(JOBS_URL(user_id), { title, company, avatar, description }, {
headers: { authorization: token }
}).then((response) => {
dispatch(addJob(response.data.job));
}).catch((err) => {
console.log(err);
dispatch(addAlert("Couldn't create job."));
});
};
}
答案 0 :(得分:1)
您正在操作创建者中获取它,因此使用userId
调度操作,将其存储在redux状态。然后你就可以从那个状态获得它并在任何你想要的地方使用。
答案 1 :(得分:0)
您可以使用localStorage。对于持久性项目,您可以使用localStorage.set(key,value)
。
您可以检索localStorage.get(key)
和localStorage.remove(key)
之类的值以进行删除。
您可以阅读文档:https://developer.mozilla.org/en/docs/Web/API/Window/localStorage