原来登录界面没有等待的过场傻等,后来学习大家的都有个 Loading 或者 Checking 的过场,就用 v-if 加了。登录请求后台返回后就取消 loading ,成功了就跳转业务页面,失败就重新登录,逻辑上很简单没啥问题。
但是跑起来发现个问题,跳转的业务页面需要资源比较多,第一次加载要个 1-2 秒,这时候会即使成功了先跳出登录界面 1-2 秒,再被业务页面覆盖,这就有点尴尬。
我现在的办法是如果登录成功,就不改 loading 了,一直转到业务页面加载出来。登录失败才改 loading 。 这个是不是不太优雅。
没进过厂,想请教这个小问题是怎么处理的?
<template>
<div>
<div v-if="isLoading">
<LoadingSpinner />
</div>
<div v-else>
//登录页面
....
</div>
</div>
...
</template>
<script lang="ts">
....
const setup(){
const btnClick = () => {
if (username.value && password.value) {
authStore.returnUrl = route.query.redirect;
isLoading.value = true;
authStore
.login(username.value, password.value)
.then((ret) => {
if (ret !== 0) {
message.warning("账号或密码错误。");
**isLoading.value = false; //现在在这里**
} else {
message.success("登录成功");
router.push((route.query.redirect as LocationQueryValue) || "/");
}
})
.catch((err) => {
console.error(err);
})
.finally(() => {
**// isLoading.value = false; //原来在这里**
});
} else {
message.warning("请输入用户名和密码。");
}
};
}
....
</script>
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.