问题:
之前版本没有这个问题,升级后出现。只有第一次、或者关闭浏览器重新打开时点击登录,才可以进入。点击浏览器刷新,登录成功,跳转为当前页面。
排查:
第一步,显示登录成功,但跳转失败,说明await fetchUserInfo()有问题。
第二步,打印初始化数据
const userInfo = await initialState?.fetchUserInfo?.(); console.log(initialState?.fetchUserInfo);
发现为undefined。
第三步,排查app.tsx getInitialState方法。
问题出在这,该方法,之前登录返回为undefined。重写方法,try ... catch 每个都给他返回fetchUserInfo
又出问题了。右上角显示问题。为loading....一直加载中。
这个问题很好解决,直接答应对应的数据,发现login.tsx,存储数据的格式和之前不一致,显示有误,做相应修改即可。
下面相关代码,提示作用:
// app.tsx
const fetchUserInfo = async () => {
try {
const { user, menus } = await GetCurrentLoginInformations({
skipErrorHandler: true,
});
if (!user) {
console.log(user);
history.push(loginPath);
return { fetchUserInfo };
}
return {
fetchUserInfo,
currentUser: { ...user, avatar: '/avatar.png' }
};
} catch (error) {
history.push(loginPath);
}
return { fetchUserInfo };
};
// login.tsx
const fetchUserInfo = async () => {
const userInfo = await initialState?.fetchUserInfo?.();
console.log(initialState?.fetchUserInfo);
if (userInfo) {
await setInitialState((s) => ({
...s,
...userInfo
}));
history.push('/order/order-lists');
}
};