MutationObserver вызывается только один раз, если он установлен в течение установленного времени ожидания - PullRequest
1 голос
/ 30 января 2020

Если я сохраняю observe внутри setTimeout, то updateChild вызывается при первом рендере, но если я удаляю setTimeout, это работает на каждом рендере. Может кто-нибудь, пожалуйста, помогите мне, как решить эту проблему, поскольку мне нужно setTimeout?

private observer = new MutationObserver(this.updateChild.bind(this));

updateChild(mutationsList: MutationRecord[], observer: MutationObserver) {
    console.log('updated');
  }

handelMouseEnter(){
      if (this.popupTimer) {
        clearTimeout(this.popupTimer);
      }
      this.popupTimer = setTimeout(() => {
        this.container = document.createElement('div');
        document.body.appendChild(this.container);

        ReactDOM.render(
          <Layout innerRef={e => (this.myRef = e)}>{this.props.children}</Layout>,
          this.container,
        );

        if (this.myRef) {
          this.observer.observe(this.myRef, { childList: true });
        }
   }, 500);
}
...