React란
사용자 인터페이스를 만들기 위한 JavaScript 라이브러리
React에서 서비스를 개발하는 데 있어 독립적인 단위로 쪼개어 구현
가상적인 표현을 메모리에 저장하고 ReactDOM과 같은 라이브러리에 의해 실제 DOM과 동기화 하는 프로그래밍 개념
JavaScript 내에서 UI를 작성하기 위해 개발자에게 익숙한 환경을 제공, HTML과 유사
Component와 Hook을 활용하면 작은 단위의, 독립적인 요소로 개발이 가능하다.
이로 인해 개발자의 생산성과 코드의 재사용성을 높인다.
<body>
<span id="text"></span>
<script>
document.getElementById("text").innerHTML = "Hello Js";
</script>
</body>
레이아웃을 구성하는 HTML과 UI 내 데이터를 변경하는 JavaScript 로직이 분리되어 있어 코드 파악에 오랜 시간이 걸릴 수 있다.
const App = () => {
const text="Hello React";
return <span>{text}</span>
}
JSX를 활용하여 HTML 내에 필요한 데이터를 한 공간에 삽입할 수 있어 개발이 간단해지고 다른 사람이 개발 의도를 파악하기 쉬워진다.
현재 React는 전 세계적으로 가장 활발하게 커뮤니티 활동이 이뤄지고 있어 방대한 자료와 편리한 오픈소스 라이브러리 등이 공유되고 있다.
단순한 웹 애플리케이션 뿐만 아니라 한 번 배운 React 지식을 React-Native에 적용하여 안드로이드 애플리케이션 및 iOS 애플리케이션 등을 개발할 수 있다.
단, React는 대규모 프로젝트에서 데이터를 효율적으로 관리하는데 유용하지만 실행속도 면에서는 다소 불리하다.
$('#todo-list').append( '
<li>
<span>' + value + "</span><button type="button" class="complete">완료</button>
<button type="button" class="remove">삭제</button>
</li>
" )
<ol id="todo-list">
{todoList.mao((item,index)=>(
<li key="{item.id} className=
{item.inCompleted ? 'completed':''}>
<span>{item.value}</span>
...
</li>
))}
</ol>
const App = () => {
const text="Hello React";
return <span>{text}</span>
}
이러한 형태로 하나의 블록
을 만들어서 핗요한 곳에 조립
하여 개발을 한다.
이것을 컴포넌트
라고 부른다.
const [todoList, setTodoList] = useState([])
const [inputValue, setInputValue] = useState('')
컴포넌트 내에서 'State'를 이용하여 데이터를 유동적으로 관리한다.
'State'가 변경될 때마다 컴포넌트가 다시 렌더링(Rendering)된다.