首页 > 解决方案 > vue findIndex 不是函数

问题描述

findIndex()这里我在函数中遇到错误

Uncaught (in promise) TypeError: state.carts.findIndex is not a function

cartId 有 r​​owId 和 qty 以及 sizeVal 和 image

方法

    updateCart() {
        this.$store.dispatch('updateCart', this.cartId)
    }

状态

state: {
    carts: [],
},

Vue 检查推车

031e0275ef3746070e80d81199bd2580:Object {
    id:1
    name:"T-Shirt"
    options:Object {
        image:"products\July2018\4TXSMgf6eAdrOlaxAMiX.jpg"
    }
    size:"l"
    price:551
    qty:2
    rowId:"031e0275ef3746070e80d81199bd2580"
    subtotal:1102
    tax:115.71
}

突变

    updateCart(state, rowId) {
        const index = state.carts.findIndex(cart => {cart.rowId == rowId});
        // console.log(index)
            state.carts.splice(index, 1, {
                'qty': cart.qty,
                'size': cart.sizeVal,
            })
    },

在我的行动中是工作

行动

    updateCart(context, cart) {
        return new Promise((resolve, reject) => {
            axios.patch(`update/cart/${cart.id}` , {
                id: cart.rowId,
                qty: cart.qty,
                size: cart.sizeVal,
                image: cart.image
            })
            .then(response => {
                context.commit('updateCart', response.data)
                resolve(response)
            })
            .catch(error => {
                reject(error)
            })
        })

    },

现在我需要在 state.carts 中更新购物车的错误需要帮助,请大家了解一下为什么它给了我错误

谢谢

标签: javascriptvue.jscartvuex

解决方案


state.carts是一个对象,而不是一个数组。 findIndex是一个数组方法

findIndex() 方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回 -1。


推荐阅读