2014-06-23 2 views
0

J'essaie d'apprendre Reactjs mais je ne suis pas capable de le résoudre. Je veux ajouter une classe d'en-tête collante à ma table qui est rendue en utilisant Reactjs mais je n'obtiens aucun succès avec ce code/pseudocode.Utiliser eventlistener dans reactjs (JSX)

handleScroll: function(e){ 
    var header = this.root.querySelector('.header'); 
var origOffsetY = header.offsetTop; 
    window.scrollY >= origOffsetY ? header.addClass('sticky'): header.removeClass('sticky'); 
}, 

componentDidMount : function(){ 
window.addEventListener('handleScroll',this.handleScroll); 
}, 

Je suis en train d'utiliser cette fonction Javascript:

<script> 
var header = document.querySelector('.header'); 
var origOffsetY = header.offsetTop; 

function onScroll(e) { 
    window.scrollY >= origOffsetY ? header.classList.add('sticky') : 
            header.classList.remove('sticky'); 
} 

document.addEventListener('scroll', onScroll); 
</script> 

Mais je ne reçois aucun succès. Existe-t-il un moyen plus facile d'implémenter la fonction javascript dans Reactjs?

Répondre

3

Dans la ligne

window.addEventListener('handleScroll', this.handleScroll); 

Je devine que vous vouliez dire à la place:

window.addEventListener('scroll', this.handleScroll); 
+0

Oui et je vois aussi cette erreur dans la console: Impossible de lire la propriété « querySelector » undefined. – deepseas

+0

Qu'est-ce que 'this.root'? Ce n'est pas défini quand vous essayez d'y accéder dans 'handleScroll'. –

+0

Je vois cette erreur pendant que je défile vers le bas, donc je pense que la fonction est déclenchée pendant le défilement mais il se peut que je doive comprendre cet objet. Doit être une erreur de syntaxe. Merci pour la réponse. – deepseas