首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vuex模块创建嵌套对象

Vuex模块创建嵌套对象
EN

Stack Overflow用户
提问于 2018-11-10 07:22:48
回答 1查看 953关注 0票数 0

我一直试图将我的store.js文件分成多个存储模块。我让它工作(有点),但它也创造了一个大问题。

在我最初的一个文件存储中,让我们假设这是我的state对象:

代码语言:javascript
复制
state: { user: '' }

Vuex developer工具中的输出以应有的方式显示了用户对象:

代码语言:javascript
复制
User: { name: "John", age: 33 }

但是,在将存储划分为模块之后,Vuex developer工具中的用户对象如下:

代码语言:javascript
复制
User: { User: { name: "John", age: 33 } }

因此,它使用我在模块对象中给它命名的名称创建一个新对象,并在主store.js文件中导入它,该文件随后包含“真”用户对象。

有没有办法不让它创建一个新对象,并保持它与整个商店生活在store.js文件中的相同呢?

-Sergio

编辑:

以下是我的文件的结构:store store.js modules user.js

模块/user.js中的代码:

代码语言:javascript
复制
const state = { User: '' }
const mutations = { ... }
const actions = { ... }
export default { state, mutations, actions }

我的store.js中的代码

代码语言:javascript
复制
import User from './modules/user';
Vue.use(Vuex);
export default new Vuex.Store({
   modules: {
      User
   }
});

在将商店外部化之前,我将在Vuex:User: { name: "John", age: 33 }中获得,然后将我得到的商店外部化:User: { User: { name: "John", age: 33 } }

它从User文件中的modules/user文件嵌套User。我希望避免这种情况(如果可能的话),这样我就不必更改组件/模板文件中的所有内容。

EN

回答 1

Stack Overflow用户

发布于 2018-11-16 06:07:54

Vue Devtools中显示的“额外父对象”实际上是命名空间的模块。如果将用户模块的namespace属性设置为false,则用户状态将不再放置在命名空间对象中,而将改为

全局命名空间下注册。(Vuex起搏)

如果您不希望用户函数名与其他模块化状态函数名称发生冲突,那么设置namespace: false是完全可以的。

代码语言:javascript
复制
const store = new Vuex.Store({
  modules: {
    User: {
      namespaced: false,
      state: { user: '' },
      ...
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53236866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档