我有像树一样的组件,其中的节点可以展开和不展开以显示和隐藏更多的节点。
我在玩带钩子的游戏,并且对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
在这种情况下如何工作?
答案 0 :(得分:1)
您要对原始rootNode
对象进行突变,应该将新对象传递给setRootNode()