反应钩子的setState似乎没有更新值

时间:2019-01-07 08:11:36

标签: reactjs react-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在这种情况下如何工作?

1 个答案:

答案 0 :(得分:1)

您要对原始rootNode对象进行突变,应该将新对象传递给setRootNode()