Javascript 反应状态下的操作
我想对反应状态进行数学运算,但结果返回NaNJavascript 反应状态下的操作,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({
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.