什么使反应状态的对象未定义但可在控制台中访问?

时间:2017-10-03 10:45:06

标签: javascript reactjs

我遇到了奇怪的问题...说我有一个方法:

alert.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))

当我要多次运行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')" } 时,

有时selectedIndex是可访问的,有时是未定义的并且给出错误" undefined不是对象(评估' _state3.selectedIndex')" ..

奇怪的是,即使selectedIndex未定义,控制台总是给出正确的值...

是什么让对象处于反应状态是未定义的,但可以在控制台中访问.. ??

2 个答案:

答案 0 :(得分:1)

这很有可能发生,因为在selectedIndex调用this.statesomeMethod中不存在null

答案 1 :(得分:0)

这是我的错误......我学到了一些东西......

实际上,我在反应状态中有其他词典说otherDict ..

state = {
  selectedIndex: 0,
  otherDict: 'someValue'
}

在某些过程之后我意外地使用

使otherDict未定义
this.setState({otherDict:undefined})

当我要用

解散this.state
let {selectedIndex, otherDict} = this.state

babel无法解除undefined变量,这就是为什么babel抛出错误undefined