【发布时间】:2018-03-19 08:07:03
【问题描述】:
我在处理处于 react-native 组件状态的数据时遇到了一个奇怪的问题。
我先定义状态:
this.state = {
bonesPosition: {
black: [{x: 0, y: 0}, {x: 0, y: 0}, {x: 0, y: 0}],
white: [{x: 0, y: 0}, {x: 0, y: 0}, {x: 0, y: 0}]
}
};
然后我更新它:
const bonesPosition = {...this.state.bonesPosition};
bonesPosition.white[0].x = this.firstWhite.state.pan.x;
this.setState({bonesPosition})
但是当我尝试访问数据时,
const whiteX = this.state.bonesPosition.white[index].x;
console.log(whiteX)
console.log(typeof whiteX)
console.log(parseInt(whiteX))
console.log(Number(whiteX))
它向我显示了值,但我可以用它计算,因为它是一个对象。但是如果我尝试将其转换为数字,它就不再识别数字值了。
44.5
object
NaN
NaN
有什么想法吗?
【问题讨论】:
-
因为它已经是一个数字了?
-
whiteX是object,而不是number或string。所以,parseInt很可能会失败。whiteX可能是覆盖了toString或valueOf方法的对象。您需要深入研究实现以找出确切的问题。 -
为什么数字或字符串不是对象?
-
什么是
this.firstWhite.state.pan.x? -
能不能设置一个调试器,看看
whiteX的原型是什么?
标签: javascript reactjs object react-native