setState реагирующего хука, похоже, не обновляет значение - PullRequest
0 голосов
/ 07 января 2019

У меня есть древовидный компонент, в котором узлы расширяются и не расширяются, чтобы показать и скрыть больше узлов.

У меня есть игра с крючками, и я немного запутался, как должен работать обработчик кликов:

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 голосов
/ 07 января 2019

Вы изменяете исходный объект rootNode, вы должны передать новый объект setRootNode()

...