在vue-electron中按下返回按钮时保存状态

vfh0ocws  于 2022-12-08  发布在  Electron
关注(0)|答案(1)|浏览(205)

我想在vue-electron中做一个桌面应用程序。我是vue.js和electron的新手。我在管理状态时遇到了一些问题。
当我点击登录按钮https://cloudup.com/cFl9MTY6cnn时,我将数据(即sessionId和用户名)发送到下一个屏幕https://cloudup.com/c76fmL8OGbF,在此屏幕上,我使用此代码https://cloudup.com/cdR0F6Qyt-3显示这些属性https://cloudup.com/csahnc6Z04J,但当我进入第三个屏幕https://cloudup.com/c0F1ztX8qu3,然后返回时,此数据消失https://cloudup.com/cTFW32DxeRa
我将使用路由器返回第二个屏幕。go(-1)https://cloudup.com/cvpxk4GsIRx
vue-router文档https://router.vuejs.org/en/essentials/navigation.html指出“router.push方法将一个新条目推入历史堆栈,因此当用户单击浏览器的后退按钮时,他们将被带到上一个URL。”和router.go(n)“此方法将一个整数作为参数,指示在历史堆栈中前进或后退多少步”
但是在我的例子中,当我回到历史堆栈时,生命周期钩子会被再次调用。这是否意味着当我们回到上一页时,组件会被再次创建,而不是从堆栈中弹出。我实际上不想在返回按钮上刷新/重新加载页面。

1wnzp6jl

1wnzp6jl1#

您还需要将数据发送到第三个屏幕。
代替

<route-link to="third_screen"></router-link>

你需要写,

<router-link :to="{ path: 'third_screen', params: { session_id: this.session_id, userName:this.user_name}}">User</router-link>

而不是router.go(-1),您需要使用router.push()方法将数据作为参数再次发送到第二个屏幕。
但我不建议使用上述方法,因为您需要将相同的数据作为params传递给所有路由。
您还应该看一下Vuex
Vuex是一个用于Vue.js应用程序的状态管理模式+库,它作为应用程序中所有组件的集中存储,其规则确保状态只能以可预测的方式变化。
您应该将会话ID存储为cookie,而不是将其作为 prop 传递。

更新

另外看一下<keep-alive></keep-alive>
参考文献

相关问题