无法从我的组件访问我的商店对象
Can't access my store object from my component
在我的商店模块 /store/template.js
我有:
const templateConfig = {
branding: {
button: {
secondary: {
background_color: '#603314',
background_image: ''
}
}
}
}
export const state = () => ({
branding: {},
...
})
export const actions = {
initializeStore (state) {
state.branding = templateConfig.branding
}
}
(initializeStore()
在应用最初加载时调用)
我想在我的组件中检索 branding
对象的品牌:
computed: {
...mapState({
branding: state => state.template.branding
})
}
但是在尝试 console.log()
branding
时,我看到了这个:
为什么我看不到 branding
对象? (这到底是什么?)
您需要 import { mapState, mapActions } from 'vuex'
(我想已经完成了)。
然后,你可以这样写
...mapState(['branding']) // or ...mapState('@namespacedModule', ['branding'])
不过,你为什么不直接(用你的background_color
)直接放置状态而不是通过 Vuex 操作?
如果您想保持这种状态,请不要忘记在您的组件中 await this.initializeStore()
在尝试访问状态之前。
您需要始终使用突变来更改状态。您可以从您的操作中调用一个:
export const mutations = {
SET_BRANDING(state, payload) {
state.branding = payload;
}
}
export const actions = {
initializeStore ({ commit }) {
commit('SET_BRANDING', templateConfig.branding);
}
}
您在观察者身上看到的是正常的,表明 branding
对象已成功映射和访问。
你看到的是 Vue 的 observable
对象,这就是 Vue 实现反应性的方式。没有这个,就不会有反应性,你会在所有顶级反应性对象上看到这样的包装器。你可以假装它不存在。
Vue 实际上在内部将同样的“包装器”应用到 data
对象以使其可观察:
Internally, Vue uses this on the object returned by the data function.
你不会在其他反应性属性上看到它,但如果它们是反应性的,它们就属于某个父可观察对象。
在我的商店模块 /store/template.js
我有:
const templateConfig = {
branding: {
button: {
secondary: {
background_color: '#603314',
background_image: ''
}
}
}
}
export const state = () => ({
branding: {},
...
})
export const actions = {
initializeStore (state) {
state.branding = templateConfig.branding
}
}
(initializeStore()
在应用最初加载时调用)
我想在我的组件中检索 branding
对象的品牌:
computed: {
...mapState({
branding: state => state.template.branding
})
}
但是在尝试 console.log()
branding
时,我看到了这个:
为什么我看不到 branding
对象? (这到底是什么?)
您需要 import { mapState, mapActions } from 'vuex'
(我想已经完成了)。
然后,你可以这样写
...mapState(['branding']) // or ...mapState('@namespacedModule', ['branding'])
不过,你为什么不直接(用你的background_color
)直接放置状态而不是通过 Vuex 操作?
如果您想保持这种状态,请不要忘记在您的组件中 await this.initializeStore()
在尝试访问状态之前。
您需要始终使用突变来更改状态。您可以从您的操作中调用一个:
export const mutations = {
SET_BRANDING(state, payload) {
state.branding = payload;
}
}
export const actions = {
initializeStore ({ commit }) {
commit('SET_BRANDING', templateConfig.branding);
}
}
您在观察者身上看到的是正常的,表明 branding
对象已成功映射和访问。
你看到的是 Vue 的 observable
对象,这就是 Vue 实现反应性的方式。没有这个,就不会有反应性,你会在所有顶级反应性对象上看到这样的包装器。你可以假装它不存在。
Vue 实际上在内部将同样的“包装器”应用到 data
对象以使其可观察:
Internally, Vue uses this on the object returned by the data function.
你不会在其他反应性属性上看到它,但如果它们是反应性的,它们就属于某个父可观察对象。