私は最近、 を使い始めましたReactJS
。具体的には、react-rails
ルビーの宝石とreact-bootstrap
コンポーネントを利用しています。
onClick
子コンポーネントにイベント リスナーを配置することについて質問があります。
以下のコード サンプルからわかるように、render
関数内で子コンポーネントを「呼び出す」親コンポーネントがあります。その関数内には、クリックされたときに呼び出すrender
ReactonClick
リスナーがあります。handleToggle
###* @jsx React.DOM ###
ToggleIconButton = React.createClass
getInitialState: ->
toggleOn: false
handleToggle: (evt) ->
this.setState(toggleOn: !this.state.toggleOn)
render: ->
`<IconButton onClick={this.handleToggle}>Toggle Button</IconButton>`
IconButton = React.createClass
render: ->
# BsButton and BsGlyphicon are React-Bootstrap components
`<BsButton>
<BsGlyphicon glyph={this.props.glyph} />
{" " + this.props.text}
</BsButton>`
残念ながら、これは私が思っていたようには機能しません。ToggleIconButton::handleToggle
呼び出されることはありません。代わりに、onClick
リスナーが配置されIconButton
、参照されますToggleIconButton::handleToggle
。
に追加の動作を追加したくありませんIconButton
。私の見方では、条件付きロジックを に配置する必要はありませんIconButton
。アイコンとボタンを表すだけで、ブラウザのイベントを気にする必要はありません。それToggleIconButton
がそのためです。
私はラップアラウンドしてReact Div
そこにリスナーIconButton
を書くことができることを知っていonClick
ますが(私はこれを試しましたが、うまくいきました)、それは少しぎこちないようです。
これを行う良い方法を知っている人はいますか?みんなありがとう!