2017-10-15 1 views
0

Quel est le problème avec cette fonction, j'essaie de faire fondre la barre de navigation au moment du défilement mais cela me renvoie une erreur dans la fonction suivante?Erreur "état n'est pas défini" dans Meteor + Réagir.

const opacity = Math.min(100/state.alturaActualScroll, 1); 

i ont mon composant navbar mais me dit que l'état n'a pas été défini, mais je ne sais pas parce que l'erreur, ceci est mon code

import React from 'react'; 
import {Link} from 'react-router' 
import { Accounts } from 'meteor/accounts-base'; 
import {Meteor} from 'meteor/meteor'; 

export default class NavbarLanding extends 
React.Component { 


    componentDidMount() { 
     window.onscroll =()=> { 
      this.setState({ 
       alturaActualScroll: window.scrollY}) 
     } 
    } 
    componentDidMount() { 
     window.onscroll =()=>{ 
      nuevaAlturaScroll = Math.ceil(window.scrollY/50) *50; 
      if(this.state.alturaActualScroll != nuevaAlturaScroll){ 
       this.setState({alturaActualScroll:nuevaAlturaScroll}) 
      } 
     } 
    } 
     // update 
    render() { 
     // console.log('donde estoy'); 
     const opacity = Math.min(100/state.alturaActualScroll, 1); 
     return(
     <div style={opacity}id="navbar"className="navbar-landing"> 
      <nav> 
       <div> 
         <ul className="ul-landing"> 
           {/* <img src="./public/images/flat-rocket.jpg"></img> */} 
           <li id="navbar-landing-title" className="navbar-title"><a>Landing </a></li> 
          <div id="menu-landing"className="navbar-menu"> 
           <li><a>acerca</a></li> 
           <li><a>portafolio</a></li> 
           <li><a>contacto</a></li> 
           <button className="btn"onClick={() => Accounts.logout()}>Logout</button> 
          </div> 
         </ul> 
       </div> 
      </nav> 
     </div> 
     ); 
    }; 
} 

NavbarLanding.reactProptype = { 
    title: React.PropTypes.string.isRequired 
}; 
+0

Alors, où est définie la variable 'state'? Une autre chose: vous avez 'componentDidMount' défini deux fois. – zerkms

Répondre

1

Votre code doit être

const opacity = Math.min(100/this.state.alturaActualScroll, 1); 

Vous avez oublié d'ajouter le mot-clé this lors de l'accès à l'état du composant, ce qui a amené l'interpréteur à rechercher une variable locale nommée state au lieu de la variable d'état de niveau classe.

Edité et corrigé après les commentaires de Felix Kling et de Zerkms

+0

Vous pourriez vouloir indiquer explicitement ce que vous avez changé. –