在vue-electron中按下后退按钮保存状态

时间:2017-08-18 11:30:49

标签: vue.js cross-platform electron state desktop-application

我想用vue-electron制作一个桌面应用程序。我是vue.js和电子新手。 我在管理国家时遇到了一些问题。

当我点击登录按钮https://cloudup.com/cFl9MTY6cnn时,我将数据即sessionId和用户名发送到下一个屏幕https://cloudup.com/c76fmL8OGbF,在此屏幕上,我使用此代码https://cloudup.com/csahnc6Z04J显示这些道具https://cloudup.com/cdR0F6Qyt-3但当我转到第三个屏幕https://cloudup.com/c0F1ztX8qu3然后回来时,这些数据会消失https://cloudup.com/cTFW32DxeRa

我将使用router.go(-1)https://cloudup.com/cvpxk4GsIRx

返回第二个屏幕

vue-router文档https://router.vuejs.org/en/essentials/navigation.html说明了这一点 “router.push方法将新条目推送到历史堆栈中,因此当用户单击浏览器后退按钮时,它们将被带到先前的URL。” 和router.go(n)“此方法将一个整数作为参数,指示在历史堆栈中前进或后退的步数”

但是在我的情况下,当我回到历史堆栈时,会再次调用生命周期钩子。这意味着当我们到达上一页时,组件再次创建而不是从堆栈中弹出。我实际上不想在后退按钮上刷新/重新加载页面。

1 个答案:

答案 0 :(得分:3)

您也需要将数据发送到第三个屏幕。

而不是

Previous

你需要写,

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

而不是router.go(-1),您需要使用router.push()方法将数据再次作为参数发送到第二个屏幕。

但我不建议使用上述方法,因为您需要将与params相同的数据传递给所有路由。

您还应该查看Vuex

  

Vuex是Vue.js应用程序的状态管理模式+库。它充当应用程序中所有组件的集中存储,其规则确保状态只能以可预测的方式进行变更。

您应该将会话ID存储为cookie,而不是将其作为道具传递。

<强>更新

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

Reference