一行箭头函数,返回多个

One line Arrow function, return multiple

本文关键字:函数 返回 一行      更新时间:2023-09-26

我正在使用ReactJS,我有麻烦得到一个箭头函数返回多个函数。

我有一个onLoad事件的一行箭头函数:

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

上面的代码不起作用。我怎样才能同时返回this.handleFrame &一行代码上的this.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>

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

还要注意,如果你的第一个函数不返回真值,下一个函数将不会被调用!

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

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

你的问题不对。你不能一次return两个项目。

您的代码正在检查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>