2016-10-19 4 views
0

私はReactJSを使用していますが、複数の機能を返すための矢印機能の取得に問題があります。1行の矢印機能、複数の返信

私は、onLoadイベントで1行の矢印の機能を持っている:

<iframe onLoad={() => (this.handleFrame && this.setState({loadingComplete: true}))}></iframe> 

上記のコードは動作しません。どのように私は両方のコードを返すことができますthis.handleFrame & this.setState({loadingComplete: true})

+0

論理演算子とその結果または2つの実際の結果値を返しますか? –

答えて

1

あなたはthis.handleFrameに電話をするのを忘れた:これは両方の機能を呼び出しますが、それはブール値を返します(両方の機能がtruthy結果を返す場合はtrueを、そうでない場合ではない)ことを

<iframe onLoad={() => (this.handleFrame() && this.setState({loadingComplete: true}))}></iframe> 

注意を

をまた、最初の関数がtruthyを返さない場合、次の関数は呼び出されないことにも注意してください。

あなたは関係なく、すべての機能を呼び出したい場合、彼らはtruthy返し、結果を返す気にしないのであれば、その後の操作を行います。

<iframe onLoad={() => { this.handleFrame(); this.setState({loadingComplete: true}) }}></iframe> 
+0

質問は単線機能に関するものです。単一行関数は '{}'を持つべきではありません –

+1

ありがとう、Dominic。 this.handleFrameを呼び出すことを忘れることが私の主な問題でした。しかし、あなたの答えは私に矢印の機能をより深く理解してくれたので、あなたが提供した情報に感謝します。 – londonfed

3

をあなたはこの

を試すことができます
<iframe onLoad={() => ({val1: this.handleFrame(), val2: this.setState({loadingComplete: true})})}></iframe> 

これます2つの値を持つオブジェクトを返します。

1

あなたの質問は間違っています。あなたできませんreturn 2つのアイテムを一度に。

コードがthis.handleFrameをチェックしていれば、this.setState({loadingComplete: true})が実行され、値が返されます。 this.handleFrameが利用できない場合は、undefinedが返されます。

複数の機能を実行する場合は、次の操作を実行できます。

<iframe onLoad={() => ((this.handleFrame() || true) && this.setState({loadingComplete: true}))}></iframe> 

あなたはthis.handleFrame()ためtrueを返す場合は、||チェックは必要ありません。

返信複数の機能を使用する場合は、次の操作を実行できます。

<iframe onLoad={() => {handleFrame: this.handleFrame, state: this.setState({loadingComplete: true})}}></iframe>