오늘의 나는 무엇을 배웠을까?
npm init react-app <폴더명>
으로 리액트 프로젝트 생성npm run start
로 개발 모드 실행control + C
로 개발 모드 종료<Fragment></Fragment>
or `<></>function App() {
return (
<h1>~</h1>
<h2>~</h2>
)
} // 에러 발생
function App() {
return(
<div>
<h1>~</h1>
<h2>~</h2>
</div>
)
} // 정상 실행
{}
로 감싸주자if문
, for문
, 함수 선언
과 같은 문장은 사용 불가능function App() {
const name = "React";
return (
<h1>{name}</h1>
)
}
if 문
대신 삼항 연산자
사용undefined
를 렌더링 하지 않아야 함function App() {
const name = undefined;
return name;
} // X
function App() {
const name = undefined;
return (
<div>{name}</div>
)
} // 위와 같이 JSX 내부에서 렌더링은 가능
class
속성을 지정할 때 className
으로 표현, // 기존 HTML
<div class="classss"></div>
// JSX
<div className="classss"></div>
for
도 htmlFor
로 사용-
문자가 포함된 스타일 이름들을 카멜 표기법으로 작성ex. background-color => bacKgroundColor
ex. onclick => onClick
data-*
속성은 있는 그대로 문법으로 작성function
또는 화살표 함수로 컴포넌트를 정의하고 return문
에 JSX 코드 반환function Component1() {
return (
<>
Hello World!
</>
)
}
const Component1 = () => {
return (
<>
Hello World!
</>
)
}
class
로 정의하고 render()
함수에서 JSX 코드 반환import React, { Component } from "react";
class Component2 extends Component {
render() {
return (
<>
Hello World!
</>
)
}
}
render()
메소드를 필수로 사용해야 함this
키워드 사용 가능import React from 'react';
import Hello from './Hello';
function App() {
return (
<Hello name="react" emotion="happy"/>
);
}
export default App;
import React from 'react';
function Hello(props) {
return <div>`안녕하세요 ${props.emotion} ${props.name}`</div>
}
export default Hello;
function Hello({ emotion, name }) {
return <div>`안녕하세요 ${emotion} ${name}`</div>
}
children
값에 담김function Button({ children }) {
return <button>{children}</button>;
}
export default Button;
function App() {
return (
<div>
<Button>버튼1</Button>
<Button>버튼2</Button>
<div>
);
}
export default App
useState
함수 사용import { useState } from 'react';
// ...
const [num, setNum] = useState(0);
// ...
useState
함수는 초깃값을 인자로 받은 뒤,state
, 두번째 변수 : setter
함수state
의 변경은 setter
함수를 통해, 함수의 인자로 전달한 값으로 변경 //...
const [numList, setNumList] = useState([]);
const handleClick = () => {
const num = Math.floor(Math.random * 10);
numList.push(num);
setNumlist(numList);
};
//...
와 같은 코드가 있을 때, push
메소드를 이용해 배열의 값을 변경한 후, setter
함수로 상태를 변경하려 하면 동작하지 않는다.
배열의 주솟값이 변경되지 않았으므로 상태가 변경되지 않았다고 판단하는 것이다.
그래서 참조형 state를 활용할 때는 Spread 문법
을 활용하는 것과 같이 새로운 참조형 값을 만들어 상태를 변경해 줘야 한다.
const [numList, setNumList] = useState([]);
const handleClick = () => {
const num = Math.floor(Math.random * 10);
setNumlist([...numList, num]);
};
이제 코드가 원하는 대로 잘 동작할 것이다.
오늘의 나는 어떤 어려움이 있었을까?
React를 배우기 시작하며 자바스크립트 기초가 탄탄해야 하는 이유를 깨달았다.
앞으로도 기본 자바스크립트 파트도 복습하고 추가 학습을 해야겠다고 생각을 했다.
또, 어제 잠을 잘 못 잤는데 저녁 식사 이후에 너무 피곤해서 집중이 잘 되지 않았다.
일찍 자기 위해 노력해야겠다.
내일의 나는 무엇을 해야할까?