未捕获的TypeError:无法读取未定义

时间:2017-03-06 21:39:18

标签: reactjs

我无法显示数组的状态以便在其中推送对象。 CreateCards组件在addCart函数中返回好的信息。

constructor(){
    super();
    this.state = {
        cards: []
    }
}


addCart(title, qte){
    console.log(title);
    console.log(qte);
    console.log(this.state.cards);
    //let array = this.state.cards;
    //array.push({title: title, qte: qte});
}

render(){
    console.log(this.state.string);
    return (
        <div>
            <div>
                <h2>Panier</h2>

            </div>
            {
                data.map((bike, index)=>{
                    return (
                        <CreateCards key={index} title={bike.title} img={bike.img} price={bike.price} addCart={this.addCart}/>
                    )
                })
            }
        </div>
    )
}

2 个答案:

答案 0 :(得分:0)

你的addCart函数应该像

addCart(title, qte){
   console.log(title);
   console.log(qte);
   const array = this.state.cards.concat({title: title, qte: qte})
   this.setState({cards: array})
}

Push方法会改变状态,因此请使用concat代替它。它返回一个新数组。

答案 1 :(得分:-2)

你也应该使用 const newCards = this.state.cards.push({title: title, qte: qte}); this.setState({ cards: newCards }); 而不是试图直接改变状态对象。