reactjs如何将变量传递给setState中的函数

时间:2017-07-03 10:59:51

标签: javascript reactjs react-jsx

我在ReactJS类中创建了一个名为addTotal(price)的方法。现在我必须将一个变量传递给setState()中的一个函数,但它不起作用:

    addTotal(price){
        this.setState(function(prevState, props, price) {
            return {total: this.state.total + price};
        });     
    }

3 个答案:

答案 0 :(得分:1)

您应该将函数传递给值并将其返回值保存到状态。你试图解决这个问题的方式似乎不合逻辑。试试这个:

addTotal(price){
    let { total } = this.state;
    total = total + price;
    this.setState({total};    
}

答案 1 :(得分:0)

问题是ReactJS中的函数setState()只能用于this.state和this.props对象。因此,您首先需要为this.state(this.state.price)创建price属性,然后在setState中使用它来运行,如下所示:

    addTotal(price){
        this.setState({price: price, total: this.state.total});
        this.setState(function(prevState, props) {
            return {total: prevState.total + prevState.price};
        });
    }

答案 2 :(得分:0)

请参阅有关State Updates May Be Asynchronous的部分,并使用prevState代替this。除此之外,功能签名不正确。看起来应该是这样的

 addTotal(price){
        this.setState(function(prevState, props) {
            return {total: prevState.total + price};
        });     
    }