Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';无法从我的组件访问我的存储对象_Javascript_Vue.js_Nuxt.js_Vuex_Vuex Modules - Fatal编程技术网

Javascript Can';无法从我的组件访问我的存储对象

Javascript Can';无法从我的组件访问我的存储对象,javascript,vue.js,nuxt.js,vuex,vuex-modules,Javascript,Vue.js,Nuxt.js,Vuex,Vuex Modules,在我的商店模块/store/template.js中,我有: const templateConfig={ 品牌:{ 按钮:{ 中学:{ 背景颜色:'#603314', 背景图像:“” } } } } 导出常量状态=()=>({ 品牌:{}, ... }) 导出常量操作={ 初始化存储(状态){ state.branding=templateConfig.branding } } (initializeStore()在应用程序最初加载时调用) 我想在我的组件中检索品牌化对象的品牌化: 计算:{

在我的商店模块
/store/template.js
中,我有:

const templateConfig={
品牌:{
按钮:{
中学:{
背景颜色:'#603314',
背景图像:“”
}
}
}
}
导出常量状态=()=>({
品牌:{},
...
})
导出常量操作={
初始化存储(状态){
state.branding=templateConfig.branding
}
}
initializeStore()
在应用程序最初加载时调用)

我想在我的组件中检索
品牌化
对象的品牌化:

计算:{
…地图状态({
品牌:state=>state.template.branding
})
}
但是当尝试
console.log()
branding
时,我看到:


为什么我不直接看到
品牌化
对象?(这到底是什么?

您需要
从'vuex'导入{mapState,mapActions}
(我想已经完成了)

然后,你可以写这个

…映射状态(['branding'])//或…映射状态('@namespacedModule',['branding'])
尽管如此,为什么不直接(使用
背景色
)而不是通过Vuex操作来输入状态


如果希望保持这种状态,请不要忘记在尝试访问状态之前等待组件中的.initializeStore()。

您需要始终使用变异来更改状态。您可以从您的操作中调用一个:

export const mutations = {
  SET_BRANDING(state, payload) {
    state.branding = payload;
  }
}
export const actions = {
  initializeStore ({ commit }) {
    commit('SET_BRANDING', templateConfig.branding);
  }
}

您在观察者身上看到的是正常的,这表明
品牌化
对象已成功映射和访问

您看到的是Vue的对象,这就是Vue实现反应性的方式。没有这一点,就不会有反应性,您将在所有顶级反应性对象上看到这样的包装器。你可以假装它不在那里

Vue实际上在内部将相同的“包装器”应用于
数据
对象,以使其可见:

在内部,Vue在数据函数返回的对象上使用此选项

在其他反应性属性上看不到,但如果它们是反应性的,则它们属于某个父可观察对象



您的模块是否有名称空间?是的,它是使用
numxt
自动进行的。如果我尝试访问
state.branding
我会得到
未定义的
,而不是屏幕截图中奇怪的东西。据我所知,这不是自动的。我在谈论这个,只是为了确定:是的,看:如果我做了
…mapState(['branding'])
我得到了
未定义的
,如果我做了
…mapState('@namespacedModule',['branding'])
我得到了我提到的同样奇怪的东西!事实上,他看到了可观察的东西,这意味着映射已经开始工作了