繁体   English   中英

一行箭头功能,返回多个

[英]One line Arrow function, return multiple

我正在使用ReactJS,但无法获取箭头函数以返回多个函数。

我在onLoad事件上有一个单箭头功能:

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

上面的代码不起作用。 如何在一行代码上同时返回this.handleFramethis.setState({loadingComplete: true})

你可以试试这个

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

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

您忘记了调用this.handleFrame:

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

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

还要注意,如果您的第一个函数未返回真值,则不会调用下一个函数!

如果要调用所有函数而不管它们是否返回真值,并且不关心返回结果,请执行以下操作:

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

您的问题是错的。 不能一次return两个项目。

您的代码正在检查this.handleFrame ,如果可用, this.setState({loadingComplete: true})执行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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM