Vue的findIndex不是一个函数。

3

这里在findIndex()函数中出现了错误

Uncaught (in promise) TypeError: state.carts.findIndex不是一个函数

cartId具有rowId、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,
            })
    },

In my Action is work

Actions

    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中更新购物车,但出现了错误。请大家帮帮我,为什么会出现这个错误。
谢谢。
3个回答

1
在Vue中全局引入PolyFill作为mixin。
 const findIndex = (values, expectedValue) => {
    let selectedIndex;
    const valuePresent = values.some((value, index) => {
      selectedIndex = index;
      return value === expectedValue;
    });
    return valuePresent ? selectedIndex : -1;
  };

1

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

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


请问您能否将文本发布而非图片?图片对于 Google 机器人来说不太容易抓取。 - Ayush Gupta
我更喜欢图片,因为它是文档的截图。这证明了我没有修改任何内容。 - ittus
一份报价应该注意到这一点,可能会在文档中链接。我尝试编辑可以吗? - Ayush Gupta
请给我发送一份 Stack Overflow 指南的链接。如果正确,我会进行更新。 - ittus
没有确切的指南说你不能添加图片,主要是为了让人们可以通过搜索引擎找到帖子。准则确实说“始终引用重要链接的最相关部分,以防目标站点无法访问或永久离线。”但我想图片也没问题。 - Ayush Gupta
显示剩余2条评论

0

findIndex是ES6数组的特性,请确保您的浏览器支持它,否则您应该应用polyfill或转译插件,如babel.js。


在您的浏览器控制台上输入test [].findIndex,如果它是一个函数,则检查state.carts instanceof Array。 - D.jennis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接