代码之家  ›  专栏  ›  技术社区  ›  Davis Jones

作为React Props传递和调用异步回调的语法

  •  0
  • Davis Jones  · 技术社区  · 2 年前

    我想知道通过React组件传递然后调用异步调用的正确语法是什么。明确地

    通常,我会有这样一个函数:

    const doAsync = async (obj) => {
       await doSomethingAsync(obj)
    }
    

    …然后我将其传递给一个组件,如下所示:

    <>
       <MyComponent asyncCallback={doAsync} />
    </>
    

    我对以下几点有点困惑:

    1. 我应该将函数传递为 asyncCallback={doAsync(obj)} asyncCallback={async () => await doAsync(obj)} 或者只是 asyncCallback={doAsync} ?
    2. 当调用此函数时,例如 <button> ,应该这样做吗 onClick={async (obj) => doAsync(obj)} onClick={doAsync} ?

    谢谢你的帮助!

    1 回复  |  直到 2 年前
        1
  •  0
  •   Jan Krupiński    2 年前

    像这样传递函数 asyncCallback={doAsync} 是最好的方法。您只需将此函数作为任何其他变量传递,就可以了。

    像这样传递函数 asyncCallback={async () => await doAsync(obj)} 也应该工作,但这只是一个样板,不需要每次重新提交两个新函数。

    像这样传球 asyncCallback={doAsync(obj)} 不起作用,因为你没有传递你在这个地方调用的函数。

    2. 你可以这样做 onClick={doAsync} 但你会通过的 event 变量作为参数而不是您的自定义 obj (如果可以的话,你可以这样做)。

    如果你想通过自定义 obj 变量,可以这样传递 onClick={() => doAsync(obj)} (你不需要使用 async await 关键字)。