2015-08-26 9 views
5

Ho questo pulsante console.log come test e viene attivato quando aggiorno la pagina anziché quando faccio clic su un pulsante di navigazione. Fammi sapere se riesci a vedere il problema con questo codice se ti servirà di più.Perché l'attivazione di onClick sul rendering del componente anziché quando viene fatto clic?

import React from 'react'; 
import SideNav from "react-sidenav"; 
var TeamActions = require('../actions/TeamActions'); 

export default class Nav extends React.Component { 
    pushName(name) { 
    TeamActions.setTeamName(name); 
    } 

    render() { 
    return(
     <SideNav.Menu 
     path="#" 
     itemHeight="32px" 
     styles={{margin: "0"}} 
     > 
     <SideNav.MenuItem 
      itemKey="truck" 
     > 
     //this is where I'm using onClick 
      <SideNav.ILeftItem 
      className="fa fa-truck" 
      onClick={console.log("hello")} 
      > 
       Boston Celtics 
      </SideNav.ILeftItem> 
     </SideNav.MenuItem> 

risposta

7

Questo perché in realtà stai chiamando la funzione console.log nel vostro gestore onclick, piuttosto che punta al suo riferimento. JSX si compila in plain JS, quindi verrà valutato qualsiasi valore tra parentesi {}. Devi solo indicare il riferimento alla funzione nel tuo onClick, non chiamarlo.

E 'un po' complicato con il fatto che quando si utilizzano le classi ES6 è necessario associare alla corrente this, non è autobound per voi come con il vecchio stile React.createClass sintassi, ma ecco un esempio veloce,

class MyComponent { 

    onLinkClicked() { 
    console.log('Clicked!') 
    } 

    render() { 
    return (
     <a onClick={this.onLinkClicked.bind(this)}>Click me</a> 
    ); 
    } 
} 
+1

Ok, quindi non si attiva più sul rendering ma non si attiva quando si fa clic sul pulsante. Sai dove dovrei posizionare l'onClick per farlo esplodere? – Username

+0

Non posso essere sicuro di non vedere il tuo codice. Avere una lettura di questi documenti possono aiutare https://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html – WildService

Problemi correlati