一行箭头功能,返回多个

时间:2016-10-19 08:52:20

标签: javascript reactjs ecmascript-6 arrow-functions

我正在使用ReactJS,我无法获得箭头函数来返回多个函数。

我在onLoad事件上有一个单行箭头函数:

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

上述代码不起作用。如何归还this.handleFrame&amp; this.setState({loadingComplete: true})在一行代码上?

3 个答案:

答案 0 :(得分:3)

你可以试试这个

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

它将返回一个具有两个值的对象。

答案 1 :(得分:1)

你忘了打电话给.handleFrame:

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

请注意,这将调用这两个函数,但它将返回一个布尔值(如果两个函数都返回真实结果,则为true,否则不返回)

另请注意,如果您的第一个函数没有返回真值,则不会调用下一个函数!

如果你想调用所有函数而不管它们是否返回真实,并且不关心返回结果,那么:

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

答案 2 :(得分:1)

你的问题是错的。 一次 return两个项目。

您的代码正在检查this.handleFrame,如果可用,则会执行this.setState({loadingComplete: true})并且值将为returnrd。如果this.handleFrame不可用,则会返回undefined

如果您想执行多项功能,可以执行以下操作。

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

如果您true返回this.handleFrame(),则不需要||支票。

如果您想返回多项功能,可以执行以下操作。

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