2015-08-26 11 views
5

Bu düğme konsol.log'u bir test olarak kullanıyorum ve bir nav düğmesini tıkladığımda sayfayı yenilediğimde tetikleniyor. Daha fazla ihtiyacınız varsa, bu kodla ilgili sorunu görebiliyorsanız bana bildirin. gerçekte onClick işleyicisi içinde console.log işlevini çağırarak yerine sadece kendi referans işaret çünkü varNeden ClickClick, tıklandığında yerine bileşen oluşturuluyor?

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> 

cevap

7

. JSX, düz JS'ye derler, bu yüzden {} parantezleri arasında bir değerlendirme değerlendirilecektir. OnClick'teki işlev referansını göstermeniz yeterlidir.

Biraz ES6 sınıfları kullanırken geçerli this bağlamak gerekiyor gerçeği ile karışık, bu eski tarz React.createClass sözdizimi ile ister için autobound, ama burada size kısa bir örnek değil,

class MyComponent { 

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

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

Tamam, yani artık render üzerinde ateş etmiyor, ancak düğmeye tıklandığında da ateş etmiyor. Ateş etmek için onClick'i nereye yerleştirmem gerektiğini biliyor musunuz? – Username

+0

Kodunuzu görmeden emin olamam. Bu dokümanları okuyarak https://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html – WildService

İlgili konular