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

botana_dev

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

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

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

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

所以我正在考虑做如下的事情,这样第二个函数将在第一个函数完成后立即执行:但它返回TypeError: undefined is not an object (evaluating 'a("LR").then')

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

我能否获得一些帮助来实施最后一个并解决错误或以任何其他方式等待onChangeTreeLayout执行,然后在reactFlowInstance.fitView()第一个完成后立即触发?

收费

尝试使用异步/等待:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章