vuejs2 - “过滤器不是函数”计算属性上的类型错误,带有箭头函数的简单过滤器
问题描述
在下面的代码片段中,如果我删除.filter(beer => beer.isFavourite)
计算的属性没有错误,基本上变成与 allBrewDogBeers 相同的值。当我添加过滤器时,我得到"TypeError: this.allBrewDogBeers.filter is not a function"
. 我想这可能与上下文有关,但我不太明白我缺少什么,因为我之前写过一个像这样简单的过滤器,但也许 Vue 让我感到困惑。
我只想拥有一个计算属性,它是 allBrewDogBeers 的子集,我将此计算属性绑定到我的模板中最喜欢的组件。
computed: {
favouriteBeers: function() {
return this.allBrewDogBeers.filter(beer => beer.isFavourite);
}
},
完整脚本:
<script>
import { eventBus } from './main.js'
import BeerList from './components/BeerList.vue'
import BeerDetail from './components/BeerDetail.vue'
import FavouriteBeers from './components/FavouriteBeers.vue'
export default {
name: "App",
components: {
'beer-list': BeerList,
'beer-detail': BeerDetail,
'favourite-beers': FavouriteBeers
},
data() {
return {
allBrewDogBeers: [],
selectedBeer: null
};
},
computed: {
favouriteBeers: function() {
return this.allBrewDogBeers.filter(beer => beer.isFavourite);
}
},
methods:{
addFavourBeer: function(beer) {
const index = this.allBrewDogBeers.indexOf(beer);
this.allBrewDogBeers[index].isFavourite = true;
},
removeFavourBeer: function(beer) {
const index = this.allBrewDogBeers.indexOf(beer);
this.allBrewDogBeers[index].isFavourite = false;
}
},
mounted(){
fetch("https://api.punkapi.com/v2/beers")
.then(response => this.allBrewDogBeers = response.json())
.then(data => this.allBrewDogBeers = data);
eventBus.$on('beer-selected', (beer) => {this.selectedBeer = beer});
eventBus.$on('beer-favourite-add', beer => this.addFavourBeer(beer));
eventBus.$on('beer-favourite-remove', beer => this.removeFavourBeer(beer));
}
};
</script>
解决方案
你这里有问题:
.then(response => this.allBrewDogBeers = response.json())
那是给 分配一个承诺this.allBrewDogBeers
,这不是你想要的。
将其更改为:
.then(response => response.json())
另一个then
将处理分配。
推荐阅读
- excel - 将值粘贴到特定行的空白列中的宏
- python - 如何根据 Holoviews 中数据框的顺序/索引设置条形的顺序
- c# - 为什么异常处理程序中间件在实际处理时会记录“未处理的异常”?
- sql-server - 使用平面文件作为存储过程的动态值
- python - QTableWidget.scrollToItem 功能问题
- amazon-web-services - 是否可以将我的组织红移数据卸载到我的组织外部的 s3 存储桶?
- python - 从 Django values() 获取外键值
- android - SingleChildScrollView 在 Column 内不起作用
- r - 无法在 for 循环内的 ggplot2 中使用 facet
- c# - c# 如何使用不同的签名来处理抽象工厂(?)