javascript - Vuex(Flux)模式:应该存储哪种类型的数据?
问题描述
我正在创建一个应用程序并第一次使用 Vuex。这个应用程序是在 Vue.js 中构建的,并且足够复杂,需要一个在所有组件之间共享的单例存储对象。Vuex 似乎是一个很好的解决方案,但我仍然不确定哪些数据应该存储在我的 vue 实例/组件中,哪些数据应该存储在 Vuex 中。
根据 Vuex 文档,它存储“状态数据”。通过术语,我假设状态只是代表应用程序本身当前状态的数据,例如:
{
isUserLoggedIn: true,
isPaymentModalShowing: false,
isLeftMenuOpen: true,
....
}
基本上,所有可以以动词“是”开头的东西(定义“状态”)
这并不能真正解决我的问题,因为我使用单例存储来提供对我所有组件的数据访问,这些数据不仅代表应用程序的“状态”,还代表用户数据,例如:
{
userData:{
email: "test@test.com",
name: "John Doe",
age: 28
}
}
所以我的问题很简单,尽管我不确定是否有一个简单的答案:我应该在 Vuex 存储对象中保留哪种类型的数据,以及我应该在组件或应用程序对象中保留哪种类型的数据?
解决方案
Vuex 的主要目的之一是成为应用程序的单一事实来源。这意味着它肯定应该保存在多个地方使用的信息。
此外,Vuex 不仅保存应用程序状态,还保存所有相关数据——您可以为 UI 和用户以及汽车拥有单独的模块。根据经验:如果您在多个地方使用数据 - 将其存储在 Vuex 中。如果数据在一个地方使用——你可以在 Vuex 中不使用状态并使用组件状态。
更多信息:https ://markus.oberlehner.net/blog/should-i-store-this-data-in-vuex/
推荐阅读
- redirect - IIS 10.0 从 X 域重定向或重写到带有子目录的 X 域
- css - 为内联 jsx 元素提供边距的问题
- ios - 在 React Native 中访问下载的文件时,如何限制 IOS 中 RCTAsyncLocalStorage_V1 文件夹的可见性?
- c# - 在 C# 中创建一个由其他模型组成的模型是一种好习惯吗?
- php - WordPress 相关问题
- elasticsearch - 使用 Elasticsearch 查找用户定义的元数据
- javascript - 如何动态追加jquery函数
- excel - VBA Excel在单元格之间复制ActiveX Spin按钮
- google-chrome - 在发送之前修改 websocket wss 发送消息
- ssis - 在 SSIS 查找转换中动态传递表名