为什么我的 React-Redux 操作 returns "undefined"?
Why my React-Redux action returns "undefined"?
我正在尝试从异步函数中获取 user_id。这是我的行动:
export const loginCC = (email, password) => {
return async (dispatch) => {
async function CC_Session() {
return ConnectyCube.createSession({
email: email,
password: password,
});
}
try {
const response = await CC_Session();
const uid = response.user_id; //THIS GIVES THE USER ID WITHOUT A PROBLEM
const token = response.token; // THIS GIVES THE DATA TOO
dispatch({
type: LOGIN_TO_CONNECTYCUBE,
ccid: uid,
ccToken: token,
});
} catch (error) {
console.log(error);
}
};
};
这是我的减速器:
const initialState = {
token: null,
userId: null,
ccid: null,
ccToken: null,
isConnected: null,
};
export default (state = initialState, action) => {
switch (action.type) {
case LOGIN_TO_CONNECTYCUBE:
return {
ccid: action.ccid,
ccToken: action.ccToken,
};
我可以从异步函数中获取数据,并发送它。
但是当我想用 getState().auth.ccid
访问它时,它 returns “未定义”。
我怎么解决这个问题?
谢谢!
我解决了这个问题。在此操作之后,我立即获得了 Firebase 登录信息。看起来 Firebase 登录操作重置了状态。我创建了另一个名为 user 的减速器。并将上面的动作发送给那个用户减速器。我不知道为什么 Firebase 操作会重置状态,但它在划分 reducer 后有效。
我正在尝试从异步函数中获取 user_id。这是我的行动:
export const loginCC = (email, password) => {
return async (dispatch) => {
async function CC_Session() {
return ConnectyCube.createSession({
email: email,
password: password,
});
}
try {
const response = await CC_Session();
const uid = response.user_id; //THIS GIVES THE USER ID WITHOUT A PROBLEM
const token = response.token; // THIS GIVES THE DATA TOO
dispatch({
type: LOGIN_TO_CONNECTYCUBE,
ccid: uid,
ccToken: token,
});
} catch (error) {
console.log(error);
}
};
};
这是我的减速器:
const initialState = {
token: null,
userId: null,
ccid: null,
ccToken: null,
isConnected: null,
};
export default (state = initialState, action) => {
switch (action.type) {
case LOGIN_TO_CONNECTYCUBE:
return {
ccid: action.ccid,
ccToken: action.ccToken,
};
我可以从异步函数中获取数据,并发送它。
但是当我想用 getState().auth.ccid
访问它时,它 returns “未定义”。
我怎么解决这个问题?
谢谢!
我解决了这个问题。在此操作之后,我立即获得了 Firebase 登录信息。看起来 Firebase 登录操作重置了状态。我创建了另一个名为 user 的减速器。并将上面的动作发送给那个用户减速器。我不知道为什么 Firebase 操作会重置状态,但它在划分 reducer 后有效。