[프론트엔드] 면접준비 개념편
서로 다른 두 컴포넌트에 같은 데이터가 필요할 때, 각 컴포넌트가 부모 자식 관계로 되어있지 않은 이상, 직접적인 데이터 전달이 어려움
데이터를 부모 컴포넌트로 보내고 다시 그 데이터를 필요한 컴포넌트로 전달하는 props drilling 이슈가 생기게 되고 이때 이 prop이 어디에서 왔는지 추적하기 어려워짐
이런 상태 관리를 효율적으로 하기 위한 여러가지 툴들이 존재
Redux, react query, swr등이 존재
redux라는 전역 상태 라이브러리를 사용해 리액트 내의 state들을 관리
JS상태관리 라이브러리
상태 관리 라이브러리는 전역 상태 저장소를 제공하며 props drilling 이슈를 해결
props drilling이 커질수록 상태관리 어려워져 이를 해결하기 위해서 redux를 사용
Mobx
Redux와 같이 리액트에서 사용할 수 있는 상태 관리 라이브러리이며, 클래스형 컴포넌트를 기준으로 만들어져 객체 지향 프로그래밍 방식으로 코드를 작성할 수 있음
이 때문에 Mobx와 리액트의 함수형 컴포넌트의 Hooks를 함께 사용하면 오류가 발생할 수 있음
Recoil
Redux, Mobx와는 다르게 React에서 제공하는 상태 관리 라이브러리 Redux와 Mobx는 React의 라이브러리가 아니기 때문에 React 내부 스케줄러에 접근이 어려움
리액트는 최근 동시성 모드를 제공하기 위해 실험 중인데,
Recoil은 리액트의 상태를 사용하기 때문에 해당 기능도 지원가능
Dom
Virtual Dom
useRef를 사용하는 이유
특정 DOM을 선택?
말 그대로 특정 태그만 지정해서 그것만 사용할 때 useRef를 사용
예를 들어 특정 엘리먼트의 크기를 가져와야 한다던 지, 스크롤바 위치를 가져오거나 설정해야 된다던 지, 또는 포커스를 설정해줘야 된다던 지 등 또한 그래프라던가 비디오 등 외부 라이브러리를 사용할 때도 특정 DOM에다 적용하기 때문에 DOM을 선택해야 하는 상황이 발생 할 수 있음