프로그래머스 풀스택 45
posted on 30 Oct 2024 under category programmers in series programmers
프론트엔드 기초: React + TypeScript(8)
💫 리액트란 무엇인가 1
React (웹 프레임워크)
React.js는 자바스크립트 라이브러리의 하나.
React의 동작원리
초기 렌더링
상속보다는 합성을 사용하며, 렌더링 흐름은 주로 상위에서 하위로(top-down) 진행.
React의 렌더링 : 컴포넌트의 상태/속성 변화 → 가상 DOM 변경 → 실제 DOM 업데이트 → 브라우저 화면 갱신
= 화면에 보여주는 작업!
DOM(Document Object Model) : HTML, XML 문서의 프로그래밍 인터페이스
가상 DOM (Virtual DOM) : React와 같은 라이브러리에서 사용, DOM을 조작하는 과정을 최적화하기 위한 메모리 상의 가벼운 사본.
💫 리액트란 무엇인가 2
npx create-react-app my-app // 리액트 프로젝트 생성
cd my-app // my-app으로 이동
npm start //react앱 실행
실행된 react 페이지에서 Ctrl + U
(페이지 소스 보기)를 하면 소스가 굉장히 짧은 걸 알 수 있음
index.html
을 보여주는 것이고 index.html
은 index.tsx
와 연결되어 있음
개발자 도구 - 요소 항목을 보면 자바스크립트 소스를 해석해서 html로 DOM트리를 보여주는 걸 알 수 있음
처음에 index.html
의 <div id="root"></div>
를 로딩을 하고 보여주는데 이 root는
const root = ReactDOM.createRoot(
document.getElementById('root') as HTMLElement
);
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
index.tsx
의 root 구조를 불러오는 것
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.tsx</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
App.tsx
컴포넌트 안에 있는 부분만 잘 신경쓰고 수정하면 됨!💫 jsx문법 1
JSX (JavaScript XML) : JavaScript 내에서 HTML과 유사한 구문을 사용해 UI를 정의할 수 있도록 해주는 문법
TSX (TypeScript XML) : TypeScript와 JSX를 결합한 문법
TSX와 JSX의 차이점
TSX
는 TypeScript의 타입 기능을 사용하기 때문에 컴파일 타임에서 타입 오류를 잡을 수 있음function App(){
return React.createElement("div", null, "Hello", "리액트!!!",
React.createElement("p", null, "반갑습니다.")
);
}
function App() {
return (
<div className="App-header">
<h1>Hello, 리액트!!!</h1>
<p>반갑습니다.</p>
</div>
);
}
리액트의 jsx문법으로 작성된 App()
JSX는 보다 직관적이고 간결하게 UI를 작성할 수 있도록 도와줌
반드시 부모요소로 감싸는 걸 잊지말기!(최상위 부모 태그 필요)
일반적으로 주로 <div>를 사용함. 물론 <> ... </>
도 사용가능
주로 하나의 컴포넌트 내부는 하나의 DOM 트리 구조로 이루어져야 한다는 내부적인 규칙이 존재
💫 jsx 문법 2
function App() {
let name = "리액트";
return (
<div className="container">
<h1 className='test'>Hello, {name}!!!</h1>
<p>반갑습니다.</p>
</div>
);
}
let name = "리액트";
이라고 정의했을 때 원래 <h1 className='test'>Hello, 리액트!!!</h1>
에서<h1 className='test'>Hello, name!!!</h1>
이런 식으로 리액트 부분을 name이라고만 적으면 변수 취급 X{name}
으로 중괄호를 감싸 사용할 것function App() {
let name = "리액트";
return (
<div className="container">
<h1 className='test'>Hello,
{
name === '리액트' ? (<h1>YES</h1>): (<h1>NO</h1>)
}!!!</h1>
<p>반갑습니다.</p>
</div>
);
}
name === '리액트' ? (<h1>YES</h1>): null
이런 식으로 값을 반환하지 않는 경우도 가능함 const port = undefined;
return(
<div>
{
port || '포트를 설정하지 않았습니다.'
}
</div>
)
포트를 설정하지 않았습니다.
출력함port || '3000'
💫 jsx 문법 3
인라인 스타일링
const style = {
backgroundColor : 'black',
color : 'white',
fontSize : '48px',
fontWeight : 'bold',
padding : '20px'
}
<div style = {style}>
이런 식으로 사용 가능함 <div style = {
{
backgroundColor : 'black',
color : 'white',
fontSize : '48px',
fontWeight : 'bold',
padding : '20px'
}
}>
<br></br>
<input></input>
<br/>
<input/>
이런 식으로 self closing을 하면 단독 사용 가능!jsx 주석 닫는 법
{/*
작성자 : kny
작성일 : 2024.10.30.
내용 : 기능에 대한 내용
*/}
{/* */}
로 주석을 닫으면 됨임시로 코드를 막고 싶을 때 : (VSCode 기준) Ctrl + /
사용하면 주석 가능~~
Y 일을 통해 명확히 알게 되었거나 이해한 부분(한 일)에 대해 정리 :
리액트, jsx/tsx 차이, jsx 문법
W 배운 점과 시사점 :
JSX (JavaScript XML) : JavaScript 내에서 HTML과 유사한 구문을 사용해 UI를 정의할 수 있도록 해주는 문법
TSX (TypeScript XML) : TypeScript와 JSX를 결합한 문법
T 응용하여 배운 것을 어디에 어떻게 적용할지:
리액트를 이용해 웹을 만들 때 더 고도화시킬 수 있음!