1. JSX (javascript syntax extension)
- Javascript 확장 버전. HTML 과 유사하게 생겼고, javascript 파일 내에서 작성할 수 있다.
- 원래의 Javascript 문법이 아니기 때문에, js 파일 내에 있는 JSX 문법을 브라우저에서 해석하지 못한다.
HTML 문법을 Javascript 코드 내부에 써주는 것.
변수에 저장할 수도 있고, 함수의 인자로 넘길 수도 있다.
const hi = <p>Hi</p>;
const myFavorite = {
food: <li> 샐러드 </li>,
animal: <li> dog </li>,
hobby: <li> programming </li>};
const myFavorite = {
food: <li> 샐러드 </li>,
animal: <li> dog </li>,
hobby: <li className = "list-name"> programming </li>};
const good = (
<div>
<p>hi</p>
</div> );
const right = (
<div>
<p>list1</p>
<p>list2</p>
</div>
);
2. Rendering
- Html 요소 또는 React 요소 등의 코드가 눈으로 볼 수 있도록 그려지는 것
- React 요소가 DOM node 에 추가되어 화면에 렌더되려면 ReactoDOM.render 함수를 사용한다.
- 첫번째 인자에는 JSX로 React 요소를 인자로 넘기고, 두번째 인자는 해당 요소를 랜더하고 싶은 container (부모 요소)를 전달한다.
ReactDOM.render (
<h1>Hello, world! </h1>, - JSX 로 React 요소를 인자로 넘기고,
document.getElementById('root') - 해당 요소를 랜더하고 싶은 html 파일의 부모 요소를 2번째 인자로 전달
);
Component
사용자가 정의한 태그를 재사용할 수 있게 하는 기술 (재사용 가능한 UI 단위)
- 가독성
- 재사용
- 유지 보수 (html 파일 안의 오류나 버그에 있어서의 수정을 동시 다발적으로 이룰 수 있다)
- 해당 페이지가 어떻게 구성 되어 있는지 파악 용이
- 컴포넌트는 또 다른 컴포넌트를 포함 (부모 컴포넌트 - 자식 컴포넌트)
- 독립적으로, 재사용이 가능한 코드로 관리할 수 있다. 하나의 컴포넌트에 필요한 html, css, js 를 모두 합쳐서 만들 수 있다.
- React 컴포넌트에서는 input 을 props 라고 말하고, return 은 화면에 보여져야 할 React 요소가 return 된다
- React 에서는 컴포넌트를 class 나 함수로 만들 수 있다.
- 컴포넌트의 첫글자는 무조건 대문자여야 한다.
Component = props => UI
1-1 함수로 component 구현하기
function Welcome(props) {
return <h1> Hello, {props.name}</h1>;
}
1-2 class로 Welcome 컴포넌트 구현하기
class Welcome extends React.Component {
render() {
return <h1> Hello, {this.props.name} </h1>;
}
}
1-3 Component 사용
<Welcome />
으로 작성function Welcome (props) {
return <h1> Hello, {props.name} ! </h1>;
}
function App () {
return (
<div>
<Welcome name="sasha" />
<Welcome name="john" />
<Welcome name="sara" />
</div>
);
}
ReactDOM.render(<App />, document.getElementById("root"));
Component 의 State
- state 란 컴포넌트의 상태 값
- state 와 props 는 둘 다 object 이고, 화면에 보여줄 정보(상태)를 가지고 있다는 점에서 서로 비슷한 역할을 한다.
- props 는 컴포넌트를 사용하는 부모쪽에서 전달해야만 사용할 수 있고 (함수의 parameter 처럼) ‼️읽기 전용‼️ 이다.
- state 는 컴포넌트 내에서 정의하고 사용하며 업데이트 할 수 있다.
const [isClicked, setIsClicked] = useState(false)