Tree View

맨땅헤딩! ㅣ 2023. 5. 10. 10:10

해당 포스트는 제로베이스 오프라인스쿨 진행 과정 중 React PairProgramming과제를 진행하며 회고를 정리하는 글이다.

 

- 현상

TreeView 컴포넌트의 LeafNode name  부모의 sibling 컴포넌트인 displayNode 컴포넌트에  전달해야 하는 현상이 있었다.

toggleNodeById함수에서 자식 노드가 없을 때 LeafNode Name displayNode의 컴포넌트에 전달하는 방법을 toggleNodeById 내부에서 해결하려고 했는데 실패했다.

<Container>
  <TreeNav>
    <TreeView initialTree={tree} />
  </TreeNav>
  <DisplayNode />
</Container>

   

const toggleNodeById = (tree, id) =>
  tree.map(node => ({
    ...node,
    isSelected: !node.children && node.id === +id,
    ...(node.id === +id && { isOpen: !node.isOpen }),
    ...(node.children?.length && { children: toggleNodeById(node.children, id) }),
  }));

   

- 발견

 위의 현상을 Click 이벤트 핸들러 내부로 옮겨서 문제를 해결 할 수 있었다.

 

// 전역 상태
const setLeafNode = useSetRecoilState(leafNodeName);

...

const handleClick = (hasChildren, name, id) => {
  if (!hasChildren) setLeafNode(name);
  setTree(toggleNodeById(tree, id));
};

   

 

- 배운점 및 선언

로직을 너무 어렵게 생각 하지 말고 쉽게 쉽게 갈 수 있는 방법도 많이 있음으로 천천히 생각해보는 습관을 가져야겠다.

'React > PairProgramming3 회고' 카테고리의 다른 글

News Viewer  (0) 2023.05.10
Calendar & DatePicker  (0) 2023.05.10
Star Rating  (0) 2023.05.10
Analog Clock  (0) 2023.05.10
Drag & Drop  (0) 2023.05.10