2017-01-06 2 views
-1

Iは2つの機能を有する:値をプロパティ関数に渡しますか?

zoomIn() { this.setState({zoom: true}) } 
zoomOut() { this.setState({zoom: false}) } 

Iプロパティとして渡す:

<TransitionGroup> 
<Carousel 
    promo={this.props.promo} 
    images={this.props.images} 
    zoom={this.state.zoom} 
    key={this.state.zoom} 
    zoomIn={this.zoomIn.bind(this)} 
    zoomOut={this.zoomOut.bind(this)} 
    /> 
</TransitionGroup> 

カルーセルにI成分内側このようにそれらを使用する:実際に

onClick={this.props.zoomOut} 

、ズームには状態とはかなり異なる値がありますので、私はちょうど1つの関数を持っていたいと思います:

zoom (state) { this.setState({zoom: state} 

私はこのような値を渡してみましたが、それはうまくいきませんでした:

zoom={this.zoom.bind(this, state)} 
+0

あなたはZOにパラメータを追加しましたomこの新しい引数を扱う関数定義? – Pineda

+0

downvotesを避けるために、タイトルのタイプミスを修正することができます。 (私は試みましたが、私は編集のポストリンクにアクセスすることはできません) – Pineda

答えて

1

代わりに直接小道具を経由して渡されたメソッドを呼び出すと、あなたは<Carousel>そのため地元方法を定義することができますズームonClickイベントハンドラを処理します。

あなたはそれに渡される引数で小道具として渡されたのいずれかの方法で呼び出すことができます。

カルーセルで:含有する成分で

class Carousel extends React.Component{ 
    constructor(props){ 
    super(props); 
    this.handleClick = this.handleClick.bind(this); 
 // you'll need to bind this to the Carousel component in order to use // this.state properly 
    } 

    // new onClick handler that calls the method passed in via props 
    handleClick() { this.props.zoomOut(this.state) }/ 

    ... // call on onClick (in render method or wherever you have it 
    onClick={this.handleClick} 
    ... 
}

をあなたが定義を変更する必要がありますパラメータを受け入れるzoomOut/zoomIn方法の

zoomOut (stateArg) { 
    // do something with the stateArg argument passed in here 
    this.setState({zoom: true}) 
} 

zoomIn (stateArg) { 
    // do something with the stateArg argument passed in here 
    this.setState({zoom: true}) 
}
関連する問題