Vue.js 路由器是否应该驱动SPA应用程序状态?

Vue.js 路由器是否应该驱动SPA应用程序状态?,vue.js,url-routing,single-page-application,vue-router,vuex,Vue.js,Url Routing,Single Page Application,Vue Router,Vuex,这是一个关于保持SPA应用程序的状态与url同步的体系结构问题。我正在使用vue、vue路由器和vuex。在我的应用程序中,有一个反复出现的问题,我将在一个非常高的层次上描述它 假设用户单击一个链接,将其从/customers转到/customers/JohnSmith。然后,我的应用程序改变了商店。该状态现在已更新,因为用户单击了按钮,而不是因为路由已更改 换句话说 用户点击链接 状态已更新,因为单击。(因为我单击了与对象关联的组件,所以我可以直接访问customer对象) 路线改变了 但是,

这是一个关于保持SPA应用程序的状态与url同步的体系结构问题。我正在使用vue、vue路由器和vuex。在我的应用程序中,有一个反复出现的问题,我将在一个非常高的层次上描述它

假设用户单击一个链接,将其从
/customers
转到
/customers/JohnSmith
。然后,我的应用程序改变了商店。该状态现在已更新,因为用户单击了按钮,而不是因为路由已更改

换句话说

  • 用户点击链接
  • 状态已更新,因为单击。(因为我单击了与对象关联的组件,所以我可以直接访问customer对象)
  • 路线改变了
  • 但是,如果我在
    /customers/JohnSmith
    上刷新页面,则步骤1不再适用,并且我的存储处于无效状态。此外,如果我使用浏览器后退按钮从
    /customers/BobbyHill
    转到
    /customers/JohnSmith
    ,我的应用程序仍然会显示关于BobbyHill的数据,即使url是JohnSmith

    这是否意味着,我的应用程序状态应该总是从URL派生

  • 用户点击链接
  • 路线改变了
  • 状态已更新,因为路由已更改(根据url,在“我的商店”中查找同名的客户对象)
  • 上述步骤将处理所有3种情况,即用户单击按钮转到
    /customers/JohnSmith
    、刷新或在历史记录中前进/后退。因此,无论用户如何到达页面,页面都应该显示正确的数据


    这是处理此问题的正确方法吗?

    在我看来,根据路线改变状态更方便,并且在进入私人路线之前使用导航卫士来检查身份。您能否解释为什么在导航到其他路线时需要改变存储。这是为了从后端服务器加载客户的详细信息吗?在我看来,根据路由改变状态更方便,并且在进入私有路由之前使用导航卫士来检查身份。你能解释一下为什么在导航到其他路由时需要改变存储吗。这是从后端服务器加载客户的详细信息吗?