1차 프로젝트가 끝나고 첫 수업, React
새로운 마음으로 다시 열심히 하자!
Component
: React에서 서비스를 개발하는데 있어 독립적인 단위로 쪼개어 구현Virtual DOM
: 가상적인 표현을 메모리에 저장하고 ReactDOM과 같은 라이브러리에 의해 실제 DOM과 동기화하는 프로그래밍 개념JSX
: 템플릿 라이브러리로, JavaScript 내에서 UI를 작성하기 위해 개발자에게 익숙한 환경을 제공. HTML과 유사. 생산성 / 재사용성
: Component와 Hook을 활용. 작은 단위의 독립적인 요소로 개발하여 개발자의 생산성과 코드의 재사용성을 높임.
사진 출처 : 엘리스SW엔지니어 4기 트랙
HTML/JS는 레이아웃과 데이터가 분리되어있어 코드 파악에 오랜 시간이 걸림. JSX는 필요한 데이터를 HTML 내 한 공간에 삽입할 수 있어 개발이 간단해지고 다른 사람의 개발 의도를 파악하기 쉬워짐.
풍부한 자료 / 라이브러리
: 전세계적으로 가장 활발하게 커뮤니티 활동이 이뤄지고 있어 방대한 자료가 있고 편리한 오픈소스 라이브러리가 공유되고 있음.
(Fluent UI, Redux, Watch Real Design, Mobx, Ant Design, React Hook Form, styled components..)
다양한 사용처
: 배운 React 지식을 React-Native에 적용하여 안드로이드 애플리케이션 및 iOS애플리케이션 등을 개발 가능.
컴포넌트
: 하나의 '블록'을 만들어서 필요한 곳에 '조립'하여 개발을 함. State
: 컴포넌트 내에서 'State'를 이용하여 데이터를 유동적으로 관리함. 'State'가 변경될 때마다 컴포넌트가 다시 렌더링 됨.const [todoList, setTodoList] = useState([])
const [inputValue, setInputValue] = useState('')
CRA(Create React App)
: React프로젝트를 손쉽게 생성할 수 있도록 도와주는 '보일러플레이트'const App = () => {
const a = 3;
const b = 6;
return <div> {a} + {b} = {a+b} </div>
}
<div className= "greeting" style={{ padding: 10, color: 'red'}}>
{name}님 안녕하세요. <br/>
반갑습니다.
</div>
<div>
<input type="text"/>
<br />
</div>
const App = () => {
return(
<div>Hello</div> //에러발생
<div>World</div>
)
}
---
const App = () => {
return (
<> {/*React.Fragment*/}
<div>Hello</div>
<div>World</div>
</>
)
}
-최상단 Element는 한개만 작성이 가능하기 때문에 <div>
또는 <React.Fragment>
를 이용해 감쌉니다. 실제 렌더링 시에는 Fragment안에 있는 내용만 출력됩니다.
<React.Fragment>
는 간단히 <>
로 표기 가능합니다.
Class Component
/ Function Component
로 나뉨 (현재는 Function Component가 주로 사용되고 있음)<MyComponent user={{name: "민수"}} color = "blue" >
<div>안녕하세요.</div>
</MyComponent>
cosnt MyComponent = (props) => {
const {user, color, children} = props
return (
<div style = {{ color }}>
<p>{user.name}님의 하위 element는!</p>
{children}
</div>
)
}