Javascript 在VueX中存储JSON结构
我是Vue/VueX的新手,我正在研究一种在VueX状态下存储JSON的解决方案。起初,这似乎很简单:Javascript 在VueX中存储JSON结构,javascript,typescript,vuex,Javascript,Typescript,Vuex,我是Vue/VueX的新手,我正在研究一种在VueX状态下存储JSON的解决方案。起初,这似乎很简单: state { jsonthing: { ... } } 问题是:getter返回Observertype,而不是Objecttype。所以我可以这样做并检索整个JSON结构: getters: { getJSON(state) { return state.jsonthing; } } 但我无法检索JSON的一个节点或单个值,如下所示: getters: { ge
state {
jsonthing: { ... }
}
问题是:getter返回Observer
type,而不是Object
type。所以我可以这样做并检索整个JSON结构:
getters: {
getJSON(state) {
return state.jsonthing;
}
}
但我无法检索JSON的一个节点或单个值,如下所示:
getters: {
getOneNode: state =>
nodeName => {
return state.jsonthing[nodeName];
}
}
}
getter以观察者的身份检索state.json
。我找不到从这个Observer
中提取所需JSON内容并返回该内容的方法。我知道我可以使用mapState
在我的组件中实现这一点,但这不是我想要的。有没有办法在getter中实现这一点
我目前正在做的是将JSON存储为字符串(JSON.stringify()
),并将其转换回getter(JSON.parse()
)。字符串作为字符串检索,而不是观察者
。它是有效的,但它是一个黑客
在这里,我也找不到任何关于Observer
类型的文档。如果有人能留下一个网址,我将不胜感激 好了,伙计们,你们今天不是很活跃,所以这里有一个解决方案。如果你知道更好的,请告诉我
解决方案1:
使用JSON.stringify()
将JSON转换为字符串,并将其存储为字符串。然后getter使用JSON.parse()
将其转换回。这是可行的,但不可否认是丑陋的
解决方案2:
生成一个返回JSON的函数。这样更好
state: {
jsonthing: null
}
mutations: {
INITIALIZE(state, jsonthing) {
state.jsonthing = new Function(`return ${ JSON.stringify(jsonthing) }`)
}
}
getters: {
getOneNode: state =>
nodeName => {
return state.jsonthing()[nodeName];
}
}
}
我已经在媒体上写了一篇关于这个方法和一个实际应用程序(我正在实际实现)的文章