react hook 的 setState 似乎没有更新值

react hook's setState does not appear to be updating the value

我有树状组件,其中展开和展开节点以显示和隐藏更多节点。

我在玩 hooks,我对 clickhandler 应该如何工作有点困惑:

const Tree = ({ tree }) => {
  const [rootNode, setRootNode] = useState(getHierarchy(tree));

  const clickHandler = (e) => {
      rootNode.data.isExpanded = !rootNode.data.isExpanded;

      setRootNode(rootNode);
  }

  return <ExpandableTree tree={tree} onClick={clickHandler} />
}

问题是 rootNode.data.isExpanded 的值永远不会改变。

useState 在这种情况下如何工作?

您正在改变原始 rootNode 对象,您应该将新对象传递给 setRootNode()