Vaadin Flow:如何判断组件是否已附加

Vaadin Flow: How to tell if a Component is attached

如何可靠地确定给定的 Component 是否实际存在于 DOM 中?

直到现在我使用 Component.getUI().isPresent() 它应该能够确定 Component 是否附加到 UI.

也可能是我 运行 进入了边缘情况,因为有问题的 Components 被封装在 ComponentRenderer 中,由 Grid 管理。

我需要像这样通过 JavaScript 访问这些 Componets

void setValue(Component comp, Value value){
  Runnable callJs = comp.getUI().ifPresent(ui -> ui.getPage().executeJs("someCall([=10=])", value));

  if(comp.isAttached()){
    // execute it right away
    callJs.run();
  } else {
    // execute onAttach
    comp.addAttachListener(evt -> callJs.run());
  }
}

经过一番挖掘,我偶然发现了 StateNode API:

comp.getElement().getNode().isAttached()