为什么只有ES6形式的setTimeout才能看到我的React道具?

时间:2016-05-24 20:24:07

标签: reactjs ecmascript-6 redux

当我尝试调用这样的redux动作创建器时,它会失败,因为this.props未定义。

setTimeout(function(){
    birthday = window.document.getElementById('birthday')
    this.props.actions.setBirthday(birthday.value)
  }, 100);

但是当我使用这样的ES6版本时,道具是可访问的并且它可以工作。

setTimeout(() => {
    birthday = window.document.getElementById('birthday')
    this.props.actions.setBirthday(birthday.value)
  }, 100)

为什么呢?我是一名高级初学者,我想了解这一点。

1 个答案:

答案 0 :(得分:0)

这是因为箭头函数具有固定的上下文,与父函数相同。但是,在常规函数中,上下文可能会发生变化。

有关详细信息,请参阅MDN docs