2016-07-18 6 views
0

Btnコンポーネントがあり、そのコンポーネント内のonClickにいくつかのスタイルトグルがあります。Btnコンポーネントと親のReact-onClickハンドラ

ボタンをクリックしたときに機能を実行するために、親にonClickを追加します。 btnコンポーネントは再利用されるので、親コンポーネントのonClickは変更されますが、BtnコンポーネントのonClickは常にbtnスタイルを切り替えるだけです。

FIDDLE

class BtnParent extends React.Component { 
constructor(props) { 
    super(props); 
    this.alsoDoThis = this.alsoDoThis.bind(this); 
    } 
    alsoDoThis() { 
    alert('clicked'); 
    } 
    render() { 
    return (
     <BtnFav onClick={this.alsoDoThis} /> 
    ); 
    } 
}; 
+0

''? –

答えて

0

あなたが子供にonClick小道具を渡すが、あなたはit.The機能を明示的に起動する必要が使用することはありません:

handleClick() { 
    this.props.onClick(); // invoke it anywhere in the child 
    this.setState({favorited: !this.state.favorited}); 
} 
0

btnParent.jsx以下:

class BtnParent extends React.Component { 
constructor(props) { 
    super(props); 
    this.alsoDoThis = this.alsoDoThis.bind(this); 
    } 
    alsoDoThis() { 
    alert('clicked'); 
    } 
    render() { 
    return (
     <BtnFav alsoDoThis={this.alsoDoThis} /> 
    ); 
    } 
}; 

btnFav.jsx下記:

class BtnFav extends React.Component { 
    render() { 
    return (
     <button onClick={this.props.alsoDoThis} /> 
    ); 
    } 
}; 

解決できます。親と子の間


コンポーネントの通信は、あなたがfunctionを渡すために小道具を反応させ使用することができますが、2つのコンポーネントは、親/子でない場合、あなたは、いくつかのイベントがlibがパブリッシュ/サブスクライブを使用することができます。そのようなhttps://github.com/hustcc/onfire.js

+0

これによりアラート(「クリック」)は機能しますが、ボタンコンポーネント内で処理されるスタイルの変更が解除されます。あなたのコードで更新されたフィドルです:https://jsfiddle.net/69z2wepo/49594/ –

+0

素晴らしい、それは働くことができます~~ – atool

0

として、これを試してみ

class BtnFav extends React.Component { 
     render() { 
     return (
      <button onClick={()=>this.props.alsoDoThis()} /> 
     ); 
     } 
    }; 
関連する問題