vue.js - 如何从 mapState() 内部访问组件数据?
问题描述
根据我的 prop 的值buttonType
,我想检索不同的存储变量:
...mapState({
backgroundColor: state => this.buttonType === 'primary'
? state.primary_button.background_color
: state.secondary_button.background_color
})
但这不起作用,因为箭头函数有自己的this
. 所以我尝试了:
...mapState({
backgroundColor: function(state) {
return this.buttonType === 'primary'
? state.primary_button.background_color
: state.secondary_button.background_color
}
})
收到此错误:
预期方法简写
这样做的正确方法是什么?
解决方案
我会将其拆分为三个道具:primaryColor
和secondaryColor
(使用mapState
),然后是一个单独的计算道具,该道具基于以下内容返回其中一个buttonType
:
export default {
computed: {
...mapState({
primaryColor: state => state.primary_button.background_color,
secondaryColor: state => state.secondary_button.background_color,
}),
backgroundColor() {
return this.buttonType === 'primary'
? this.primaryColor
: this.secondaryColor
}
}
}
或者如果你只想要一个道具,你可以直接引用商店的状态:
export default {
computed: {
backgroundColor() {
return this.buttonType === 'primary'
? this.$store.state.primary_button.background_color
: this.$store.state.secondary_button.background_color
}
}
}
推荐阅读
- php - 我在控制器函数中定义了两个变量,但我无法在视图中访问这两个变量
- c - 在 Linux AUART 内核驱动程序中,如何使用 I2C GPIO 扩展器的引脚而不是 RTS 来控制 RS485 方向?
- r - R 闪亮的令人费解的警告:asJSON(keep_vec_names=TRUE) 的输入是一个命名向量
- sql - SQL查询错误:日期格式图片在将整个输入转换为字符串之前结束
- machine-learning - 我如何才能仅在最后 3 个时期查看验证准确性?这是为了减少时间
- python - 此 for 循环仅显示学生记录的最后一个条目
- javascript - Javascript新手卡在XMLHttpRequest返回数据上
- python - 如何使用 aggfunc 'min' 在 dask 中做 pivot_table?
- vue.js - Vue npm run serve 在随机端口上启动
- apache - 如何在 laragon 中将 HTTP 重定向到 HTTPS