【发布时间】:2020-04-15 04:20:23
【问题描述】:
我一直在努力使用 vuex getter 中的 .find() 方法。
我建立了一个商店,列表处于状态(页面)
// state.js
const state = {
pages: [{id:1, content:"Page 1"}, {id:2, content:"Page 2"}]
};
还有一个带有 find 方法的 getter,比如这篇文章:Reference
// getters.js
const getters = {
indexPage: state => {
let indexPage = state.pages.find(function(page) { // same error with arrow function
return page.id === 1;
});
return indexPage !== undefined ? indexPage : null;
}
}
我希望返回第一个对象,但在我将 getter(使用 mapGetters)映射到组件后,它会抛出此错误。
TypeError: "page is undefined"
我也用.filter() 方法(返回一个数组)尝试了相同的代码,但它确实可以正常工作而没有任何错误。此代码有效:
const getters = {
indexPage: state => {
let indexPage = state.pages.filter(page => page.id === 1);
return indexPage[0];
}
}
【问题讨论】:
-
运行
console.log(state.pages);会得到什么 -
列表,页面。但有趣的是,它修复了它(尽管有一个控制台语句并且 ESLint 快疯了)。编辑:我的意思是修复它,不会引发错误并将数据传递给组件。
标签: javascript vue.js vuex