Vue 过滤器类型错误和渲染

艾哈迈德·马姆杜

当我刷新主页并转到导航栏中的类别时,getter 过滤器中出现错误 我收到了错误类型错误并呈现。

TypeError: state.productsShop.filter is not a function

Error in render: "TypeError: state.subCategoiesShop.filter is not a function"

TypeError: state.subCategoiesShop.filter is not a function

(in promise) TypeError: state.subCategoiesShop.filter is not a function

我从过滤器中得到的所有这些错误

我的状态

state: {
        filter: 'all',
        subFilter: 'all',
        products: {},
        categories: {},
        categoriesNav: {},
        products_4: {},
        productsShop: {},
        subCategoiesShop: {},
        aboutBanar: {},
    },

我的吸气剂在这里是我的问题

getters: {
        productsFiltered(state) {
            if (state.subFilter == 'all' && state.filter == 'all') {
                return state.productsShop
            } else {
                return state.productsShop.filter(function(product) {

                    return (state.subFilter === 'all' ? product.category_id > 0 : product.category_id === state.subFilter ) && (state.filter === 'all' ? product.subcategory_id > 0 : product.subcategory_id === state.filter )
                    // return product.category_id == state.subFilter && pr  oduct.subcategory_id == state.filter
                })
            }
            // return state.productsShop
        },
        subCategoryShopFilter(state) {
            if (state.subFilter == 'all') {
                return state.subCategoiesShop
            } else {
                return state.subCategoiesShop.filter(category => { 
                    return category.category_id === state.subFilter
                })
            }
            // return state.subCategoiesShop
        }
    },

我的突变

updateCategory(state, subFilter) {
            state.subFilter = subFilter
        },
        updateSubCategory(state, filter) {
            state.filter = filter
        },
        landingFirst(state, products) {
            state.products = products
        },
        landingSecond(state, categories) {
            state.categories = categories
        },
        landingThird(state, products_4) {
            state.products_4 = products_4
        },
        categories(state, categories) {
            state.categoriesNav = categories
        },
        products(state, productsShop) {
            state.productsShop = productsShop
        },
        subcategories(state, subcategories) {
            state.subCategoiesShop = subcategories
        },
        retriveAbout(state, aboutBanar) {
            state.aboutBanar = aboutBanar
        },

    },

我的行动

来自 Laravel api 路由的 Axios API

updateCategory(context, subFilter) {
            context.commit('updateCategory', subFilter) 
        },
        updateSubCategory(context, filter) {
            context.commit('updateSubCategory', filter) 
        },
categories(context) {
            return new Promise((resolve, reject) => {
                axios.get('categories')
                .then(response => {
                    context.commit('categories', response.data)
                    resolve(response)
                })
                .catch(error => {
                    reject(error)
                })
            })
        },
        products(context) {
            return new Promise((resolve, reject) => {
                axios.get(`shop/products`)
                .then(response => {
                    context.commit('products', response.data)
                    resolve(response)
                })
                .catch(error => {
                    reject(error)
                })
            })
        },
        subCategories(context) {
            return new Promise((resolve, reject) => {
                axios.get(`shop/subcategories`)
                .then(response => {
                    context.commit('subcategories', response.data)
                    resolve(response)
                })
                .catch(error => {
                    reject(error)
                })
            })
        },

我的 Shop.vue 组件

export default {
        props: {
            link: {
                type: String,
            },
            slug: {
                type: String,
            },
        },
        data() {
            return {
                filter: 'all',
                categories: {},
            }
        },
        mounted() {
            this.$store.dispatch('products')
            this.$store.dispatch('subCategories')
        },

        computed: {
            productsFilter() {
                return this.$store.getters.productsFiltered
            },
            categories1() {
                return this.categories = this.$store.state.categoriesNav
            },
            subCategoryShopFilter() {
                return this.$store.getters.subCategoryShopFilter
            },
        },
        methods: {
            changeFilter(filter) {
                this.$store.dispatch('updateSubCategory', filter)
            },  
        },
    }

谢谢

胡安·科尔特斯

Filter 来自Array.prototype.filter()它只能在Arrays 调用不能在任何Object调用当你初始化你的状态变量时,你说productsShop: {}{}是空对象的速记初始化,而不是[]给你一个空数组。

这是否能解决您的问题完全取决于代码的其余部分。至于你最初的错误,这是推理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Vue setTimeout过滤器问题

来自分类Dev

Vue 全局过滤器抛出值未定义的错误

来自分类Dev

Vue 2过滤器数据列表和显示数据计数

来自分类Dev

使用vue js和axios动态网址的搜索过滤器

来自分类Dev

为什么此切换和过滤器在Vue JS中不起作用?

来自分类Dev

搜索和过滤器功能仍然无法正常使用(Vue JS)

来自分类Dev

Vue.js无法解析过滤器:键

来自分类Dev

更改点击事件vue.js的过滤器

来自分类Dev

返回多个值的过滤器vue.js

来自分类Dev

明确将Vue过滤器导入组件

来自分类Dev

吸气中的Vue链多个过滤器

来自分类Dev

调用Vue过滤器会动态使组件崩溃

来自分类Dev

满足条件时停止vue过滤器/ javascript

来自分类Dev

查找/过滤器通过ID Vue js包含数组

来自分类Dev

Vue.js | 过滤器不返回

来自分类Dev

Lodash 过滤器搜索数组中的几个元素(Vue)

来自分类Dev

vue 过滤器在括号内不起作用

来自分类Dev

Vue.js(v。1.0.14)Vue过滤器与Vue验证器

来自分类Dev

过滤器函数中的类型错误

来自分类Dev

如何在Vue JS中使用v-for和orderBy过滤器反转数组的顺序?

来自分类Dev

如何从 Vue 中的另一个过滤器访问一个附加的过滤器

来自分类Dev

Vue.js通过特定列上的多个过滤器过滤数据

来自分类Dev

Vue 在同一个过滤器中按两个属性过滤

来自分类Dev

按基本约束过滤墙:过滤器值对字段和过滤器类型无效

来自分类Dev

使用vue.js注册自定义过滤器

来自分类Dev

Vue JS在输入字段中的v模型上应用过滤器

来自分类Dev

Vue.js上的组合复选框过滤器

来自分类Dev

Vue:我可以在计算属性内使用组件过滤器吗?

来自分类Dev

使用计算的属性向Vue.js表添加过滤器

Related 相关文章

热门标签

归档