2016-06-28 6 views
11

हो रही है जब मैं इस प्रिंट Onscroll हैंडलर के अंदर मैं DedicatedWorkerGlobalScope बजाय निर्माता मिलता है।DedicatedWorkerGlobalScope बजाय निर्माता

var Frame = React.createClass({ 
    _handleScroll: (ev) => { 
     console.log(this) //DedicatedWorkerGlobalScope 
    }, 
    render: function() { 
     return (
      <ScrollView 
       ref='scrollViewH' 
       onScroll={this._handleScroll}> 
       {items} 
      </ScrollView> 
     ); 
    } 
}); 

मैं इनलाइन समारोह के साथ स्क्रॉल संभाल यदि यह सही काम करता है:

var Frame = React.createClass({ 
    render: function() { 
     return (
      <ScrollView 
       ref='scrollViewH' 
       onScroll={(ev) => { 
        console.log(this) //Constructor 
       }}> 
       {items} 
      </ScrollView> 
     ); 
    } 
}); 

बाइंडिंग इस काम नहीं करता।

onScroll={this._handleScroll.bind(this)} 
+0

मैं एक नमूना अनुप्रयोग में सही व्यवहार मिला: HTT सुंदर सभ्य विवरण कैसे बाध्यकारी वाक्य रचना ES6 और कैसे काम करता है अपेक्षित व्यवहार प्राप्त करने के लिए ps: //rnplay.org/apps/otiPug चीजों को अलग करने का प्रयास करें, कुछ और संदर्भ बदलना चाहिए। –

उत्तर

3

जब मैं पुराने फैशन तरह से कॉलबैक घोषणा (बिना ES6 तीर कार्य) यह उम्मीद के रूप में काम करता है दुबारा लिखा। ऐसा क्यों?!!!! अगर कोई जानता है, तो कृपया मुझे जवाब दें।

var Frame = React.createClass({ 
    _handleScroll: function(ev) { 
     console.log(this); //Constructor 
    }, 
    render: function() { 
     return (
      <ScrollView 
       ref='scrollViewH' 
       onScroll={this._handleScroll}> 
       {items} 
      </ScrollView> 
     ); 
    } 
}); 
+0

कृपया तीर फ़ंक्शन स्कोप संदर्भ पर विवरण के लिए मेरा उत्तर देखें और ऐसा क्यों होता है – Felipe

4

जब आप तीर समारोह घोषणा उपयोग करते हैं, आप का उपयोग कर रहे अपने चर 'फ्रेम' के रूप में एक ही स्तर पर 'इस' उपलब्ध नहीं है क्योंकि ES6 संदर्भ का निष्कर्ष निकालते है। यह नीचे दिए गए लेख, जिसमें कहा गया है

[तीर कार्यों] निहित मुनाफा होता है और सबसे महत्वपूर्ण बात, वे हमेशा enclosing दायरे से इस के मूल्य का उपयोग से समझाया गया है

लेख देता है एक

https://www.sitepoint.com/bind-javascripts-this-keyword-react/

संबंधित मुद्दे