Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.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 反应状态下的操作_Javascript_Reactjs - Fatal编程技术网

Javascript 反应状态下的操作

Javascript 反应状态下的操作,javascript,reactjs,Javascript,Reactjs,我想对反应状态进行数学运算,但结果返回NaN var b= Number(this.state.price) / Number(this.state.BTCvalue); console.log(this.state.price) //returns right price console.log(this.state.BTCvalue) //returns right number console.log(b) // returns NaN this.setState({

我想对反应状态进行数学运算,但结果返回NaN

 var b= Number(this.state.price) /  Number(this.state.BTCvalue);
 console.log(this.state.price)  //returns right price
 console.log(this.state.BTCvalue) //returns right number
 console.log(b) // returns NaN
  this.setState({
    res: b
  });

创建局部变量并从状态赋值

let {price, BTCvalue} = this.state;
检查变量是否未定义和编号。 你可以用
!未定义的
!isNaN
进行检查。 对它做任何数学运算

var res = price/BTCvalue;
然后设置状态

this.setState({ res: res });

确保您的值在状态中为数字。

您能显示更多代码吗?仅凭这一点很难说。可能一个或两个状态对象(price、BTCvalue)未设置。是。正如@mediaguru所说,请分享更多的代码(可能是为了解决您的问题)。什么->
返回正确的价格
实际返回。。作为做-
Number(“10”)/Number(“2”)
将返回5。很可能,您的
BTCValue
等于0,或者
Number的结果(this.state.BTCValue)
等于0或
NaN
在Javascript中这不是一个正确的数字,请尝试
Number('3459.2617')
您将看到它是
NaN
,你需要把这个数字解析成一个JS数字,…这并不能真正回答OP的问题,因为他在没有析构函数的情况下也在做同样的事情。同样的结果。它返回“res”的NaN。price和BTCvalue的值是多少?分享你的州代码。最好解释你在做什么,而不是只发布代码。我用这样的代码来解决它。问题只是一个“,”。
const { price, BTCvalue } = this.state;
const res = Number(`${price}`.replace(/,/g, '')) / Number(`${BTCvalue }`.replace(/,/g, '')); // remove "," before doing division
!isNaN(res) && this.setState({
    res
}); // check if result is number before setting state.