我正在使用ReactJS,我无法获得箭头函数来返回多个函数。
我在onLoad事件上有一个单行箭头函数:
<iframe onLoad={() => (this.handleFrame && this.setState({loadingComplete: true}))}></iframe>
上述代码不起作用。如何归还this.handleFrame
&amp; this.setState({loadingComplete: true})
在一行代码上?
答案 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>