vue.js - 变异用于不同组件的 Vuex 数组
问题描述
在第一个组件中,我有一个函数使用存储在 VueX 中的值更改数组
methods: {
//get a function that changes the pickedlist array that is stored in vuex store
...mapActions([
'updatePickedDates'
]),
...mapGetters([
'dates'
]),
resetArray() {
this.updatePickedDates(this.dates}
}
在另一个组件中
我使用来自 VueX 的 getter,它在这个数组上传递:
computed: {
...mapGetters(["managementNews"])
}
但是,当resetArray()
函数运行时,我得到错误
state.pickedDates.includes is not a function
以下是我的 VueX 商店中的 getter 和 mutation:
mutations: {
mutatePickedDates: (state, payload) => {
state.pickedDates=payload
}
},
actions: {
updatePickedDates({commit}, payload) {
commit('mutatePickedDates', payload)
}
},
modules: {
},
getters : {
//get news that are of type management
managementNews: function(state) {
return state.news.filter(i => i.type === "management" && state.pickedDates.includes(i.date));
},
dates: state => {
return state.dates
},
pickedDates: state => {
return state.pickedDates
}
},
解决方案
在这种情况下this.dates
是一个函数而不是一个数组。该错误表明它不是未定义的,但它没有includes
方法。
mapGetters
应该为计算属性提供 getter。没有办法如何 mapGetters
应用methods
并使其this.dates
成为一个数组。
它应该是:
methods: {
...mapActions([
'updatePickedDates'
])
},
computed: {
...mapGetters([
'dates'
]),
}
推荐阅读
- reactjs - 赛普拉斯异步问题
- macos - 无法在 OS X 上使用 org-babel 捕获 rg/ag/pt 的输出
- reactjs - 如何从 LocalStorage onClick 中仅删除一项?
- shell - 在它们之间使用 grep 制作多命令食谱?
- python - return 语句如何在函数中工作?我可以使用多个返回语句吗?
- postgresql - 从 2 个查询中减去结果
- wordpress - 在 Woocommerce 订单跟踪表上使用电话号码更改电子邮件或仅使用订单号进行跟踪
- reactjs - 更改后第一次加载时 React 道具显示为空
- c# - 事件回调
抛出 RuntimeBinderException - python - 从具有不同非整数索引的大小不等的列表对象创建数据框