JavaSript + XML
const count = 1;
const title = <h1>{count}번째 고양이</h1>;
※ 위 title변수에 담은 h1 태그는 리액트 엘리먼트라고 부른다.
최신 문법을 브라우저가 이해할 수 있는 JavaScript로 통역
// Ex)
React : const title = <h1>안녕</h1>
브라우저 : 뭐라고?
Babel : const title = React.createElement(’h1’,null,’안녕’)이래요
브라우저 : 아하!
빈 HTML 공간에 React 때려박기
// [HTML]
<div id = “app”></div>
// [React]
const target = document.querySelector("#app")
const myButton = <button>버튼</button>
ReactDOM.render(myButton,target)
여기저기 재사용 가능한 UI 코드 조각
<Card emoji = {dog} title ="멍멍" />
<Card emoji = {cat} title = "야옹" />
function Card(props){
return(
<div>
{props.emoji}
<h2>{props.title}</h2>
</div>
)
}
리액트에 CSS 끼얹기
<div className ="danger">위험</div>
<div style={{color:'red'}}>위험</div>
사용자 이벤트(클릭,스크롤 등) 다루기
일반 자바스크립트 이벤트 목록과 동일하지만 중간에 대문자로 쓰면 된다.
function handleClick(event) {
console.log("클릭했습니다");
}
<button onClick={handleClick}>제출</button>;
컴포넌트 안에서 자유롭게 변경할 값이 필요할 때
const [counter, setCounter] = React.useState(1);
function 카운터증가() {
setCounter(counter + 1);
}
<button onClikck={카운터증가}>카운터는 {counter}</button>;
배열로 반복되는 UI그리기
const favorites = ["이미지1","이미지2","이미지3"]
<ul>
{favorites.map(image => <img src = {image}>)}
</ul>
사용자 입력 다루기
const [value, setValue] = React.useState("초기값이요");
function onValueChange(e) {
setValue(e.target.value);
}
<form onSubmit={handleSubmit}>
<input value={value} onChange={onValueChange} />
<button type="submit">제출</button>
</form>;
브라우저에 데이터 저장하기
리액트 문법이 아니다,브라우저 기능이다.
localStorage.setItem(’이름’,’유림’)
localStorage.getItem(’이름’) //유림
https://www.daleseo.com/js-web-storage/
리액트 초기 개발에 필요한 모든 것을 자동으로 해준다.
전역 스타일을 처리하는 특수 styled Component를 생성하는 helper 함수이다.
https://styled-components.com/docs/api#createglobalstyle
Fragment는 일종의 유령 컴포넌트 이다.
JSX에서는 <br />
같이 태그를 닫아야 한다. 또한 컴포넌트는 여러 개의 JSX 태그를 반환할 수 없다.
결론은 컴포넌트는 <>...</>(Fragment)
또는 <div>...</div>
감싸주어야 한다.
function App() {
return (
<>
{" "}
{/* Fragment */}
<GlobalStyle />
<Router />
</>
);
}