Electron应用开发中重新加载后的页面状态保持
我正在开发一个类似Electron的网页式桌面应用。
我现在有一个登录页和一个主页。目前,登录逻辑仅用于开发阶段,因此相关配置保存在.env文件中。
现在,在重新加载以查看主页的新改动时,应用窗口会回到登录页,我需要再次登录。
我如何让该页面在重新加载后仍停留在我正在工作的当前页面(如主页)?
解决方案
问题在于,Electron在重新加载时总是从默认页面(登录)启动,因为它不知道用户之前在什么页面。你需要手动持久化当前页面的状态。
选项1:使用 localStorage(最简单的方式)
只要用户导航时就保存当前页:
// After successful login, save state
localStorage.setItem('currentPage', 'home');
应用加载/重新加载时,首先读取该值:
window.addEventListener('DOMContentLoaded', () => {
const page = localStorage.getItem('currentPage');
if (page === 'home') {
showHomePage();
} else {
showLoginPage();
}
});
登出时将其清除:
localStorage.removeItem('currentPage');
选项2:使用 electron-store(生产环境推荐)
安装它:
npm install electron-store
在 main.js:
const Store = require('electron-store');
const store = new Store();
// Save on login
store.set('currentPage', 'home');
// Read on startup, default to 'login'
const lastPage = store.get('currentPage', 'login');
然后使用 lastPage 来决定在你的 BrowserWindow 中加载哪个HTML文件或路由,而不是把登录页硬编码进去。
要点:确保不要在每次创建窗口时就无条件地调用 win.loadFile('login.html')。先检查持久化的状态,再加载正确的页面。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。