异步JS:Button需要按两次才能执行onClick()。 onClick() 触发 2 个函数,但只有一个在第一次单击时执行

Asynchronous JS: Button needs to be pressed twice to execute onClick(). The onClick() triggers 2 functions but only one is executed on 1st click

我有一个关于我正在处理的应用程序的问题。我有一个触发 2 功能的按钮。其中一个是 setState ,它改变了 dagre 图的方向,另一个是 React-flow-renderer 提供并适合(居中)屏幕中的图形实例的函数。我认为它需要异步完成,因为第二个函数只有在我双击按钮或者我设置 setTimeOut 在 f.ex., 3 秒后执行时才会执行。所以这有效:

<Button
  onClick={() => {
    onChangeTreeLayout('LR');
    setTimeout(() => {
      reactFlowInstance.fitView();
    }, 5000);
  }}
>

这在第二次按下按钮后起作用:

<Button
  onClick={() => {
    onChangeTreeLayout('LR');
    reactFlowInstance.fitView();
  }}
>

所以我想做类似下面的事情,这样第二个函数就会在第一个函数完成后立即执行:但是它 returns TypeError: undefined is not an object (evaluating 'a("LR").then')

<Button
  onClick={() => {
    onChangeTreeLayout('LR').then(() => reactFlowInstance.fitView());
  }}
>

我可以得到一些帮助来实现最后一个并解决错误或任何其他等待 onChangeTreeLayout 被执行然后 reactFlowInstance.fitView() 被触发的方法吗第一个完成了吗?

尝试使用 async/await:

<Button
  onClick={async () => {
    await onChangeTreeLayout('LR');
    reactFlowInstance.fitView();
}}