vue.js - 如何从另一个 Vuex 数据属性访问 Vuex 数据属性?
问题描述
我将颜色变量存储在 vuex 商店中名为“colors[]”的数组中,以便在我的 vue 应用程序中轻松访问。当我在组件方法或内联样式中访问这些颜色时,这可以正常工作。
现在我将一组对象存储在我的 Vuex 存储中,称为“priorities[{}]”。每个优先级都有一个附加的颜色,比如“绿色”等。这个颜色变量的十六进制值应该来自我的 vuex 存储中的“颜色”数组。
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
colors: {
blue: '#1f96ff',
green: '#0DAA54',
orange: '#F49D3A',
red: '#FF2833',
purple: '#5E57BA',
pink: '#B539AC'
},
priorities: [
{
id: 1,
name: 'Low',
value: 10,
color: THIS SHOUD LINK TO colors.green
},
{
id: 2,
name: 'Medium',
value: 20,
color: THIS SHOUD LINK TO colors.orange
},
{
id: 3,
name: 'High',
value: 30,
color: THIS SHOUD LINK TO colors.red
}
}
}
所以,我基本上尝试了从 this.$store.state.colors 到 state.colors 的所有方法,但在我看来,这通常是行不通的。但是,如何做到这一点?
解决方案
将您priorities
移至getters
.
export default new Vuex.Store({
state: {
colors: {
blue: '#1f96ff',
green: '#0DAA54',
orange: '#F49D3A',
red: '#FF2833',
purple: '#5E57BA',
pink: '#B539AC'
},
priorities: [{
id: 1,
name: 'Low',
value: 10,
color: 'green'
},
{
id: 2,
name: 'Medium',
value: 20,
color: 'orange'
},
{
id: 3,
name: 'High',
value: 30,
color: 'red'
}
]
},
getters: {
prioritiesWithColors(state) {
return state.priorities.map((priority) => {
priority.color = state.colors[priority.color];
return priority
})
}
}
})
然后你可以像这样访问它:
this.$store.getters.prioritiesWithColors
推荐阅读
- css - 合并在两个不同位置使用的单个选择器以删除 scss lint 错误
- node.js - MongoDB在nodeJS无服务器应用程序中返回一个空数组
- apache-spark - Apache PredictionIO 类似产品引擎模板安装问题
- html - 绝对定位的黑屏覆盖了 div 的文本而不是图像,我不明白为什么
- python - Kivy 从 textinput 获取用户输入并将文本设置为标签
- javascript - 有没有办法在不需要的情况下加载 JS 文件?
- java - 在 Junit 测试中从应用程序属性访问属性时出现空指针异常
- r - 如何使用基本 R 滞后函数?
- intellij-idea - Intellij/Scalatest 无法开始测试
- caching - 将独立 redis 标记为只读