이전에는 HTML, CSS, VanillaJS 만으로도 웹 서비스를 구축하여 배포하는 게 흔했지만 시간이 지날수록 유저와 웹간의 상호작용 늘어나기기 시작했다.
일일이 DOM을 사용하여 절차식으로 선언하는 코딩 방식은 비효율적이기 때문에 상호작용이 많고 규모가 커진 웹 애플리케이션을 계속해서 개발하고 유지보수를 용이하게 하기 위해서는 이를 간소화시킬 수 있는 방안이 필요해졌다.
DOM 조작을 쉽게 해주는 jQuery라는 자바스크립트 라이브러리가 초기에 등장하긴 했으나, jQuery 역시 DOM에 직접 접근을 해야한다는 사실은 변함이 없었기 때문에 여전히 어려움이 많았다.
그래서 이를 개선시킬 수 있는 다양한 프론트엔드 프레임워크와 라이브러리들이 등장하게 된 것.
프론트엔드 개발에서 컴포넌트란, 재활용 가능한 UI 구성 단위를 뜻함.
import React from 'react';
class App extends React.Component {
render() {
return <h1>This is Class Component!</h1>;
}
}
export default App;
import React from 'react';
const App = () => {
return <h1>This is Function Component!</h1>;
};
export default App;
-> 클래스 컴포넌트보다 훨씬 간단하고 단순하기 때문에 함수 컴포넌트를 더 많이 사용하게 됨.
기존에는 HTML와 JavaScript가 개별의 파일이었다면 JSX는 이 둘을 합쳐서 한번에 사용하는 것을 가능케 해준 문법이다. 즉, JSX는 HTML과 JavaScript 로직을 하나의 JavaScript 파일 안에서 모두 처리하기 위해 확장한 문법을 뜻함.
🚨 JSX문법은 암기가 답. 이해<암기; 암기부터 하고 이해하는 걸로! 암기를 해야 JSX를 사용할 수 있음
index.html
파일은 건들지 않고,
src 폴더 내 생성한 js 파일 안에 컴포넌트를 생성한 후 router.js
파일 안에 BorwserRouter 들을 설정해준다.
// router.js import React from "react"; import { BrowserRouter, Routes, Route } from "react-router-dom"; import Login from './pages/Login/Login'; import Main from './pages/Main/Main'; const Router = () => { return ( <BrowserRouter> <Routes> <Route path='/' element={<Login />} /> <Route path='/main' element={<Main />} /> </Routes> </BrowserRouter> ); }; export default Router;
그 이후에 index.js
파일 내 root.render(<Router />);
를 작성해준다.
// index.js import React from 'react'; import ReactDOM from 'react-dom/client'; import Router from './router'; const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<Router />);
vscode 내 터미널을 통해 rpm start
실행 시 router.js
에서 할당한 Route path
주소에 따라 할당된 element
가 불러와진다!
💬 첫 React 적용 후기
리액트라는 라이브러리를 이용하여 기존 javascript들의 기능을 보다 편리하게 사용하는 방법을 더욱 익숙케 해야겠다. 정신 놓치면 이해 못하고 어물쩡 어물쩡 넘어가게 될 듯...
- 처음에 javascript로 작성한 westagram login html, css 파일을 리액트로 변환하는 과정에서 같은 html 파일이라고
login.html
내용을index.html
에 냅다 복붙했는데.. 뭐하는 짓..?
➡️ 이런 멍청이같은 짓 하지 말고 html을 jsx문법으로 변환하여login.js
에 ✨Login 컴포넌트
✨로 생성해주어router.js
와index.js
파일이 해당 ✨컴포넌트✨를 불러올 수 있게끔 해주어야 함.// Login.js에 Login 함수 컴포넌트 생성해주기 import React from 'react'; const Login = () => { return <h1>This is Function Component!</h1>; }; export default Login;
어디에 뭐가 들어가고 어떤 파일이 어느 파일에 영향을 서로 미치는지 더욱 완벽하게 이해할 것!