리덕스는 전역상태관리 라이브러리로, 중앙저장소 역할을 한다. 액션 크리에이터를 통해 액션을 만들고, 그 액션을 디스패치 함수로 실행시킨다. 그러면 store에서 해당되는 리듀서로 매칭되는 액션이 있는지 확인하고, 스토어에 저장된 상태를 변경해주는 원리로 작동한다. thunk와 같은 추가 라이브러리를 통해 비동기 작업을 쉽게 해 줄 수 있는 장점이 있지만, 코드가 많고 복잡하기 때문에 소규모 프로젝트에서는 context API를 사용한다.
context API는 리액트에서 지원하는 context를 사용하기 위한 API이다. 별도의 패키지 다운로드 없이 가능하지만, 하나의 상태만 저장되고, 상태값이 변경되면 provider로 감싼 모든 자식 컴포넌트가 리렌더링 된다는 단점이 있다.
recoil은 context API를 기반으로 페이스북에서 만든 상태관리 라이브러리이다. 비동기 처리를 기반으로 작성되어 리덕스와 같이 다른 비동기 처리 라이브러리에 의존할 필요가 없다. store와 같은 외부 요인이 아닌 react 내부의 상태를 활용하고 context API를 기반으로 구현되어 있어 더 리액트에 가까운 라이브러리이다.
block 요소는 하나의 태그가 브라우저에서 좌우공간을 다 차지하면서 독립적인 덩어리 공간을 가지는 요소들이다. 일반적으로 p, div가 있다.
inline 요소는 하나의 태그가 브라우저에서 실제로 코딩된 그 영역만 차지하여 좌우로 다른 태그가 나란히 위치할 수 있는 요소들이다. 일반적으로 span 태그가 있다.
block 요소는 내부에 block 요소와 inline 요소를 포함할 수 있다.
inline 요소는 내부에 block 요소를 포함할 수 없다.