【发布时间】:2021-07-30 05:25:17
【问题描述】:
我即将创建一个 Vue.js 项目(例如在线提醒),它使用 RESTful API 实现。我知道 Vuex 是一种状态管理模式,但我不知道何时使用它,因为在我现在的想法中,每次我要实现一个调用服务的功能时,也会为此创建一个商店。例如:AuthenticationAuthentication Store 中要调用的服务。
我的模式/结构:
- Service : Call api
- Store : Call Service
- Component : Store (Dispatch action)
第一个问题: 我实现了登录功能,然后创建了一个服务登录方法。所以我的问题是我真的需要在商店中创建操作登录方法吗?
第二个问题: 在什么特定的模块/功能中或何时使用商店 Vuex?
【问题讨论】:
-
我认为您的方法是正确的。我使用 Vuex 来保存我希望在应用程序生命周期内持久保存的数据,并可以从不同的页面/组件访问,例如你提到的身份验证系统。另一个例子可能是:您在每个页面中都有一个“最新消息”块,您可以在商店内的 nuxtServerInit 操作中获取该内容,然后将其保存为状态,然后您可以从每个页面获取它而无需请求该数据再次。
-
好的。以及一次调用 api/service 并且不使用状态或没有数据要保存的操作怎么样,是否仍然需要为此创建操作?
-
@SergioCerrutti vuex 不是为了持久化,这是 cookie/localStorage、API 或类似的工作。对于 OP:如果您不使用既不存储结果,调用会做什么?
-
嘿@kissu,你是对的,但我的意思是在应用程序中保持持久性,而不是会话。如果您不刷新页面或滥用路由器/nuxt 链接,存储的数据将保持不变。我认为这种方式的 Vuex 在很多情况下都很有用,不是吗?
-
@SergioCerrutti 如果您确实不硬刷新页面,则本地或全局状态仍位于浏览器中。但它与您在 JS 中创建的任何其他变量一样是易变的。持久性不是 IMO 在这里使用的术语,因为对我来说,这基本上意味着“我可以在刷新后仍然在这里”。