React native 获取专用WorkerGlobalScope而不是构造函数
当我在onScroll处理程序内部打印此时,我得到 专用工作全局范围而不是构造函数React native 获取专用WorkerGlobalScope而不是构造函数,react-native,scrollview,React Native,Scrollview,当我在onScroll处理程序内部打印此时,我得到 专用工作全局范围而不是构造函数 var Frame = React.createClass({ _handleScroll: (ev) => { console.log(this) //DedicatedWorkerGlobalScope }, render: function() { return ( <ScrollView
var Frame = React.createClass({
_handleScroll: (ev) => {
console.log(this) //DedicatedWorkerGlobalScope
},
render: function() {
return (
<ScrollView
ref='scrollViewH'
onScroll={this._handleScroll}>
{items}
</ScrollView>
);
}
});
当我以旧的方式重写回调声明时(没有ES6箭头函数),它会按预期工作。为什么?!!!!如果有人知道,请给我一个答案
var Frame = React.createClass({
_handleScroll: function(ev) {
console.log(this); //Constructor
},
render: function() {
return (
<ScrollView
ref='scrollViewH'
onScroll={this._handleScroll}>
{items}
</ScrollView>
);
}
});
var Frame=React.createClass({
_手柄克罗尔:功能(ev){
console.log(this);//构造函数
},
render:function(){
返回(
{items}
);
}
});
当您使用箭头函数声明时,您使用的是与变量“Frame”在同一级别可用的“this”,因为es6正在推断上下文。下面的文章对此进行了解释,其中指出
[箭头函数]具有隐式返回,最重要的是,它们总是使用封闭范围中的值
本文对绑定语法在ES6中的工作原理以及如何获得预期的行为给出了相当不错的解释:
我在一个示例应用程序中得到了正确的行为:尝试隔离一些东西,其他东西一定在改变上下文。有关箭头函数作用域上下文以及发生这种情况的原因的详细信息,请参阅我的答案
onScroll={this._handleScroll.bind(this)}
var Frame = React.createClass({
_handleScroll: function(ev) {
console.log(this); //Constructor
},
render: function() {
return (
<ScrollView
ref='scrollViewH'
onScroll={this._handleScroll}>
{items}
</ScrollView>
);
}
});