- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
目前正在使用 Vue.js 构建一个大型网站,一直卡在 Vuex store 的架构中。
文件夹结构现在是这样的
.
├── build
├── src
│ └── components
│ ├── Header.vue
│ └── TimeStamp.vue
│ └── Photo.vue
│ └── pages
│ ├── index.vue
│ └── about.vue (includes Header.vue, Thumbnail.vue)
├── store
│ └── index.js
│ └── modules
│ ├── Header.js
│ └── TimeStamp.js
│ └── Photo.js
基本上我的代码模式是每个组件都有一个相应的模块存储,但似乎所有模块状态都需要作为一个大的 SINGLE 对象导入,这就是现在让我困惑的地方,因为它甚至意味着在一个页面中不需要 TimeStamp 组件,TimeStamp 状态仍然存在于范围内,假设我总共有数百个状态,但我只需要 Header.js
存储,所以其他的都是实际上没用。
因此,我的问题是:
Is it possible to create dynamic state object for each page. For example, in About page, only import
Header.js
andPhoto.js
, in Index page, only importHeader.js
andTimeStamp.js
, and the structure would look similar like below.
├── store
│ └── pages
│ ├── Index.js
│ └── About.js
│ └── News.js
│
│ └── modules
│ ├── Header.js
│ └── TimeStamp.js
│ └── Photo.js
最佳答案
单状态对象
it seems all module state need to be imported as a big SINGLE object
好吧,所有这些都作为单个对象管理。但是你当然知道可以根据需要返回碎片的 setter/getter ?
将商店模块放在一起非常容易
export const store = new Vuex.Store({
modules: {
config,
user,
pages,
...
},
plugins: [addTagToType_StorePlugin]
})
关于拥有单个对象的事情是您可以添加横切代码,例如上面的 addTagToType_StorePlugin
(这是为了增强开发人员工具显示)。
动态状态
Is it possible to create dynamic state object for each page
当然。
没有关于如何构建您的状态的规则。通量模式只是为您提供有关应如何更新和访问状态的规则。
您应该使用最适合您的应用程序的任何结构。
你可以在上面看到,我使用了一个pages
状态模块。为了让您了解动态方面,这里是初始结构。
const state = {
files: {
validations: [],
referentials: [],
clinics: []
},
}
因此,files
下的每个属性都用于不同的页面。如果用户从未访问“验证”页面,则永远不会加载状态。
如何访问动态状态?
您的 getter 可以返回一个带有参数的函数,该参数用于“动态”选择状态切片(引用:Vuex Getters)。
const getters = {
pageFiles: state => {
return page => {
return state.files[page]
}
},
computed: {
pageFiles() {
return this.$store.getters.pageFiles(this.page)
},
Devtools 和动态状态
上面提到的插件用于增强 chrome devtools 在更改动态数据时的显示。引用 vue-devtools
const addTagToType_StorePlugin = store => {
store.subscribe((mutation, state) => {
if (mutation.payload.tag) {
mutation.type = `${mutation.type} / ${mutation.payload.tag}`
}
})
}
突变可能是 SET_FILES
,但是是哪些页面文件?
在payload.tag中传入页面类型,这个插件会发生变化(例如),
SET_FILES
到
SET_FILES / validations
关于javascript - 大型网站中的 Vuex store 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47465967/
我刚刚开始使用 Vuex,但遇到了问题(这可能是我的一些无能为力的语法错误)。我有一个用户喜欢 like_items 并且有一个网络调用,它与一个项目不同。 mutations: { SET_TOGG
我刚开始在这里学习 Vuex。到目前为止,我一直将共享数据存储在 store.js 中。文件和导入store在每个模块中,但这越来越烦人,我担心会发生变异。 我正在努力解决的是如何使用 Vuex 从
我正在创建一个使用 Fabric.js 来管理 Canvas 的 Vue 应用程序。 我想使用 Vuex 管理 Canvas 状态。为此,我将 fabric canvas 实例设置为 vuex 状态变
我正在构建一个 Nuxt 应用程序,我正在从我在本地主机上运行的节点后端获取一些数据。 我有一个插件 getApps.js export default ({ store }) => { st
我想安装 Vuex 但出现错误。 // error npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree
我使用 vuex-persistedstate 包( https://github.com/robinvdvleuten/vuex-persistedstate )在浏览器上保持数据状态。 我使用 A
假设我有一个简单的 Vuex 状态来保存食谱: const state = { recipe: { id: '', name: "", ingr
目前,我有一个具有 2 个状态属性的商店 - 版本和冠军 + 2 个发出 GET 请求然后提交到状态的操作。第二个 GET 请求 URL 需要包含我从第一个 GET 请求获取的版本,如下所示: axi
我有一个基于 Vue 和 Vuex 的小应用程序。它只是一个包含类似项目的表格 {{ item.name }} Edit Items 数组是使用 getter 从
我有一个 Vuex getter,我从应用程序中的各个组件调用它。但是,我发现在调用 getter 之前需要稍微复杂一些的逻辑,所以我使用了 Vuex Action。如何使用操作中的参数调用 gett
为什么会出现此错误: Error [vuex] Do not mutate vuex store state outside mutation handlers. 这是什么意思? 当我尝试输入编辑输入
在 Nuxt 文档(here)中,它说“您可以选择将模块文件分解为单独的文件:state.js、actions.js、mutations.js 和 getters.js。” 我似乎找不到任何示例来说明
我正在使用 TypeScript 构建一个简单的 vue 项目。我在我的 vue 项目中编写了 vuex 商店,该商店有一个名为“计算”的子模块。但是一旦创建了包含子模块的主存储,就会发生奇怪的错误(
我完全熟悉 Vuex,但我对 Vue 组合 API 一无所知。这到底是怎么回事,它和Vuex有什么区别?它涵盖了 Vuex 中的哪些差距,以及何时何地使用它们更好? 感谢您的帮助。 最佳答案 首先,
简短的问题:是否可以通过 Nuxt Auth 模块手动更新 Vuex 中的用户数据? 为什么我有这个问题:我的问题是这个。我在用户文档中的 MongoDB 中保存了一些 Likes/Follows。我
尝试将带有 vuex-module-decorators 的存储模块加载到初始化程序中时出现此错误: vuex.esm.js?2f62:261 Uncaught TypeError: Cannot r
我有一个 VueX 商店,有两个模块,user.js 和merchant.js,顶层是index.js。 user.js 中的 getter 是: 重构 const getters = { s
我在我的代码库中偶然发现了这个错误,并试图看看是否有人可以修复它。 以下是我的 listings/actions.js export const fetchFeaturedListings = ({
我正在尝试将 Vuex 与 Vue 3 一起使用。这是我在 main.js 中的代码: import { createApp } from 'vue'; import App from './App.
我在我的代码库中偶然发现了这个错误,并试图看看是否有人可以修复它。 以下是我的 listings/actions.js export const fetchFeaturedListings = ({
我是一名优秀的程序员,十分优秀!