Javascript 是什么使对象从反应状态变为未定义状态,但可以在控制台中访问?
我遇到了奇怪的问题。。。假设我有这样一种方法:Javascript 是什么使对象从反应状态变为未定义状态,但可以在控制台中访问?,javascript,reactjs,Javascript,Reactjs,我遇到了奇怪的问题。。。假设我有这样一种方法: someMethod = () => { console.log({state:this.state}) // always giving correct object console.log({selectedIndex:this.state.selectedIndex}) // always giving correct value let {selectedIndex} = this.state // somet
someMethod = () => {
console.log({state:this.state}) // always giving correct object
console.log({selectedIndex:this.state.selectedIndex}) // always giving correct value
let {selectedIndex} = this.state // sometime not giving error, sometime giving error "undefined is not object (evaluating '_state3.selectedIndex')"
}
当我要多次运行someMethod
时
有时selectedIndex是可访问的,有时是未定义的,并给出错误“undefined不是对象(正在计算“\u state3.selectedIndex”)
奇怪的是,控制台总是给出正确的值,即使selectedIndex未定义
使对象从反应状态变为可访问状态的因素未定义,但在控制台中是可访问的。?这很可能是因为
selectedIndex
在调用someMethod
时,此状态中不存在。。。我学到了一些东西
实际上,我在react状态中有另一个dict,比如说otherDict
state = {
selectedIndex: 0,
otherDict: 'someValue'
}
经过一些过程后,我意外地使otherDict
未定义
this.setState({otherDict:undefined})
当我要销毁这个时,用
let {selectedIndex, otherDict} = this.state
babel不能分解未定义的
变量,这就是为什么babel抛出错误未定义的