【发布时间】:2017-05-22 20:06:51
【问题描述】:
我一直在努力尝试将我的 React 代码从 ES5 迁移到 ES6。正如我现在发现的那样,this 不再自动绑定,这会导致各种地狱。
我试图通过反复试验找出正在传递的对象。到目前为止,我可以找到所有内容并进行相应调整。但是,当涉及到 this.setState 时,我遇到了问题,因为它 在 console.log 中不可见!!!!查看 ES5 中的屏幕截图:
请教我如何钓鱼,即帮助我弄清楚如何理解对象何时具有 this.setState?
我尝试过的事情
- 通过谷歌搜索,我了解到您可以通过更改基本组件来default bind everything。不幸的是,这在 this.setState 中不起作用。它看起来与控制台中
this的 ES5 版本相同,所以我得出结论 setState 仍然没有以某种方式绑定
【问题讨论】:
-
在这里分享你的代码..
-
当您将组件函数传递给事件处理程序时,例如onClick 等,它不绑定到“this”。所以你要做的就是:onClick={this.yourmethod.bind(this)}。所有其他的东西,比如生命周期方法都会有这个
-
当您说“不幸的是,当涉及到 this.setState 时这不起作用”这实际上是什么意思?如果您想保留
this的范围,那么您绝对需要在事件处理程序上使用.bind(this),这在 ES6 中“工作”。 -
只需使用
name = () => { /* stuff /* }定义您的方法,这样该方法将自动绑定到组件上下文 -
我认为从长远来看,学习
this的工作原理会让你的生活更轻松,而不是追逐和检查this的每次使用。如果你知道this是如何工作的,那么什么时候不绑定函数就很清楚了。
标签: reactjs ecmascript-6 ecmascript-5