오늘부로 꽤 길었던 웹 파트가 모두 끝났다. 처음 웹에 대해 배운다고 했을 때는 길어도 4일 정도 간단한 구현을 배우지 않을까 싶었는데, 생각보다 많은 내용을 다뤄 꽤 길어졌던 것 같다.
오늘은 React에 대해 조금 배우고 React를 사용해서 간단한 웹을 만들어 배포까지 해보았다.
npx create-react-app 프로젝트 이름npm run start : 임시 개발 서버로 실행function Greeting({ text }) {
return <div style={{ fontSize: "30px" }}>{text}</div>;
}
export default function App() {
return (
<div className="App">
<Greeting text="안녕하세요" />
<Greeting text="반갑습니다" />
<Greeting text="어서오세요" />
</div>
);
}
const [a, b] = useState(c);
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<div>현재 값 : {count}</div>
<button onClick={() => setCount(count - 1)}>-1 감소</button>
<button onClick={() => setCount(0)}>초기화</button>
<button onClick={() => setCount(count + 1)}>+1 증가</button>
</div>
);
}
function Counter() {
// count : 상태
// setCount : count의 값을 업데이트하는 함수
const [count, setCount] = useState(0);
const handleButtonClick = (option) => {
if (option === "plus") setCount((prev) => prev + 1);
else if (option === "minus") setCount((prev) => prev - 1);
else if (option === "reset") setCount(0);
};
return (
<div>
<div>현재 값 : {count}</div>
<button onClick={() => handleButtonClick("minus")}>-1 감소</button>
<button onClick={() => handleButtonClick("reset")}>초기화</button>
<button onClick={() => handleButtonClick("plus")}>+1 증가</button>
</div>
);
}
const todoList = [
"점심 먹기",
"복습하기",
"블로깅",
"운동",
"게임",
"유튜브보기",
];
<ul
style={{
display: "flex",
flexDirection: "column",
alignItems: "center",
}}
>
{todoList.map((todo, idx) => (
<li key={idx}>{todo}</li>
))}
</ul>
JavaScript와 React를 배워보니 생각보다 더 복잡하고 어려웠던 것 같다. 처음 생각했던 이미지는 CSS처럼 직관적인 기능일 줄 알았는데, 대부분의 기능을 함수를 사용해서 웹을 구현하니까 단기간 배워서 가능한 언어는 아니라는 것을 이번 기회에 느꼈다. 하지만 빠른 템포의 수업 속에서 코드 따라 치는 것도 겨우 했던 날들이 많아서, 필요한 기능을 하나씩 찾아서 구현하다 보면 또 할 만하다는 생각이 들 수도 있을 것 같다.
다음 주부터는 OpenCV와 AI에 대해서도 간단하게 다뤄본다고 해서 잘 따라갈 수 있도록 더 노력해야겠다.