1
2
如上两图:在react组件中,已知其他环境都相同,仅仅是图1多了一层箭头函数,问:为何在本组件的scroll方法中,图1形式取到this是本组件,图2形式this却是undefined?
1
2
如上两图:在react组件中,已知其他环境都相同,仅仅是图1多了一层箭头函数,问:为何在本组件的scroll方法中,图1形式取到this是本组件,图2形式this却是undefined?
1.首先箭头函数的this是静态绑定的
2.要理解onScroll这种注册的是事件回调,也就是后面应该是个函数,当croll事件触发的时候执行等号后面的函数,第二种写法就相当于你的scroll()在render的时候就被执行了,而不是在事件触发的时候,里面的this也不是undefined
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
这个问题得从
class
说起。当定义React组件时,
extends React.Component
时,不会将this
继承下来。所以你的第二个图是this
是undefined
.而ES6中的arrow function呢,默认在定义的时候会绑定
this
。使用
this
一般有两种做法。