첫 번째로는 가독성이 좋아 개발자간의 소통이 원활하다.
두 번째로는 검색 효율성(SEO)이 좋다. 시맨틱 요소를 사용하면 중요도에 따라 우선 순위를 정하여 최우선순위로 검색 결과 상단에 표시된다.
세 번째로는 웹 접근성이다. 화면의 구조에 대한 정보까지 추가로 전달하여 다양한 사용자에게 동일한 수준의 정보를 제공할 수 있다.
<header>,<main>,<footer>같은 태그들을 시맨틱 태그라고한다.
semantic(의미의, 의미가 있는 이라는 뜻)과 HTML(화면의 구조를 만드는 마크업 언어)의 합성어이다.
즉 시맨틱 태그는 의미있는 태그라고 할 수 있다.
<div>와<span>만 사용한 화면 구성 예시

Semantic 태그로 사용한 화면 구성 예시

Redux주요 개념인Action->Dispatch->Reducer->store순서로 데이터가 단방향으로 흐르게 된다.
Action은 상태를 변경하기 위해 발생하는 이벤트이다. 객체 형태로 구성되며type속성으로 어떤 동작을 하는지 명시한다.
Dispatch는Action객체를Reducer에 전달하는 함수이다.Dispatch는Action을 발생시키고Store에 전달하는 역할을 한다.
Reducer는Action객체와 현재 상태 인수를 받아 변경된 새로운 상태를 반환한다.
Store는Redux중앙 상태 저장소이다. 액션에 기반해서Reducer안에 정의 되어있는 방법으로State를 갱신한다.
애플리케이션의 상태를 저장하고, 각 컴포넌트에서 상태에 액세스하기 위해 사용된다.
Redux는 가장 유명한 상태 관리 라이브러리 중 하나이고중앙 집중식 저장소를 사용하여상태 관리가 일관성있게 이루어지는 장점이 있고미들웨어를 사용하여 비동기(Redux-Thunk) 작업 처리를 하며규모가 큰 프로젝트에 적합하다. 서버 데이터를 위한 로직이 커지고보일러 플레이트가 비대해지는 단점이 있다.
Recoil은분산된 상태를 사용하여 상태 업데이트코드가 간결해지고유지보수가 쉬운장점이 있고 비동기 작업처리를 위해유틸리티 함수를 제공해비동기 작업 처리 코드가 간단하다. 그리고 규모가 작은 프로젝트에 적합하다.