Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 获取专用WorkerGlobalScope而不是构造函数_React Native_Scrollview - Fatal编程技术网

React native 获取专用WorkerGlobalScope而不是构造函数

React native 获取专用WorkerGlobalScope而不是构造函数,react-native,scrollview,React Native,Scrollview,当我在onScroll处理程序内部打印此时,我得到 专用工作全局范围而不是构造函数 var Frame = React.createClass({ _handleScroll: (ev) => { console.log(this) //DedicatedWorkerGlobalScope }, render: function() { return ( <ScrollView

当我在onScroll处理程序内部打印此时,我得到 专用工作全局范围而不是构造函数

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>
        );
    }
});