在实现微信扫码登录功能后,通常需要完成以下两个操作: 1. 关闭登录弹窗 2. 刷新主页面以更新用户登录状态
// 微信扫码登录配置
wx.ready(function() {
wx.checkJsApi({
jsApiList: ['scanQRCode'],
success: function(res) {
if (res.checkResult.scanQRCode === true) {
wx.scanQRCode({
needResult: 1,
scanType: ["qrCode"],
success: function(res) {
const result = res.resultStr;
// 发送登录请求
loginWithWechat(result, function() {
// 登录成功回调
closeLoginModal(); // 关闭弹窗
window.location.reload(); // 刷新页面
});
}
});
}
}
});
});
function closeLoginModal() {
// 根据你的UI框架选择相应方法
// 例如使用jQuery:
$('#loginModal').modal('hide');
// 或原生JS:
document.getElementById('loginModal').style.display = 'none';
}
// 登录成功后触发自定义事件
function onLoginSuccess() {
const event = new Event('wechatLoginSuccess');
document.dispatchEvent(event);
}
// 主页面监听事件
document.addEventListener('wechatLoginSuccess', function() {
closeLoginModal();
window.location.reload();
});
如果是单页应用,推荐使用状态管理更新而不需要完全刷新:
// 使用Vue示例
methods: {
handleWechatLoginSuccess() {
this.$store.dispatch('updateUserInfo'); // 更新用户状态
this.showLoginModal = false; // 关闭弹窗
// 不需要刷新整个页面
}
}
添加过渡效果:在关闭弹窗和刷新页面之间添加短暂延迟,提升用户体验
setTimeout(() => {
window.location.reload();
}, 300); // 300ms后刷新
局部刷新:如果可能,优先考虑局部刷新而非整个页面刷新
错误处理:确保添加适当的错误处理逻辑
function handleLogin(response) {
if (response.success) {
closeLoginModal();
window.location.reload();
} else {
showErrorToast(response.message);
}
}
状态保存:如果页面有重要状态,刷新前考虑保存到localStorage或URL参数中
根据你的具体技术栈和项目需求,可以选择最适合的方案实现优雅的登录后处理流程。