React报错,如何解决?(标签-ar|关键词-index)

React报错:

Uncaught TypeError: this.state.cartData is not iterable
 at App.addCartData 
Uncaught TypeError: Cannot read properties of undefined (reading 'indexOf')

相关代码:
App.js 中类组件App中相关代码


state = {
    cartData:
        {
        data: [],
        totalAmount: 0,
        totalCost: 0
        }
}
addCartData = meal => {
    let newData = [...this.state.cartData]
    if( this.state.cartData.data.indexOf(meal) !== -1 ){
        this.setState(state => {
            newData.data.meal.amount += newData.data.meal.amount
            newData.totalAmount += newData.data.meal.amount
            newData.totalCost +=  newData.data.meal.amount.price
            return {
                state: {
                    cartData:  [...newData]
                }
            }
    }
        )
      
    }
    else{
        newData.data.push(meal)
        newData.data.meal.amount = 1 
        newData.totalAmount += 1
        newData.totalCost += newData.data.meal.amount.price

         this.setState(state => {
            return {
                state: {
                    cartData: {

                    } 
                }
            }
    } )
    }
    this.setState(state => {
        return {
            state: {
                cartData:  {...newData} 
            }
        }
}
    )
}

cartData被定义为一个对象,而在addCartData函数中却被当做数组来使用

  • 这篇博客: React二维码组件中的 在index.js中使用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • import React, { Component } from 'react';
    import ImageCode from '../ImageCode'
    export default class Index extends Component {
    	getImageCode = (value) => {
    		console.log(value.toLowerCase()); // 二维码结果
    	}
    	render() {
    		<div>
    			<ImageCode getImageCode={this.getImageCode} />
    		</div>
    	}
    }