反应回调卸载组件

时间:2019-08-21 14:45:29

标签: javascript html reactjs

我对HTML节点有疑问。 在NavBar内部,我有一个来自materializecss的下拉列表。

要获取该元素,我使用了createCallback钩子,因为在DOM更新之后,我需要抓住该节点。

(useEffect无效,因为有时节点为空)

  const nodeRef = useCallback(node => {
    if (node !== null) {
      M.Dropdown.init(node);
    }
  }, []);

这将初始化元素,然后我将其称为节点:

<div
  ...
  ref={nodeRef}
  data-target="dropdown1"
>

问题是:

我对内部具有NODE的组件具有可见性条件,如下所示:

{visible && <Component />}

当我更改VISIBLE值(在其他地方分派了一些动作,我使用的是上下文API)时,React会在UnorderedList上给我一个错误...,然后:

DOMException: "Node was not found" 

可能他正在尝试更新状态,但该节点不再存在,并且已被记录下来?

如何卸载NODE,然后隐藏整个组件?

非常感谢!。

0 个答案:

没有答案