Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将变量传递给setState内的函数_Javascript_Reactjs_React Jsx - Fatal编程技术网

Javascript 如何将变量传递给setState内的函数

Javascript 如何将变量传递给setState内的函数,javascript,reactjs,react-jsx,Javascript,Reactjs,React Jsx,我在ReactJS类中创建了一个名为addTotal(price)的方法。现在我必须将变量传递给setState()内的函数,但它不起作用: addTotal(price){ this.setState(function(prevState, props, price) { return {total: this.state.total + price}; }); } 问题是,ReactJS setState()

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

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

问题是,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};
        });
    }
请参阅关于的部分,并使用
prevState
而不是
this
。此外,函数签名不正确。应该是这样的

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

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

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