
코딩앙마
강의 목록 : https://www.youtube.com/playlist?list=PLZKTXPmaJk8J_fHAzPLH8CJ_HO_M33e7-
vscode 확장 패키지 추가
1. - Auto Import - ES6, TS, JSX, TSX
2. - Reactjs code snippets
3. - ESLint
4. - Prettier - Code formatter
Visual Studio Code 폴더/파일 아이콘 변경하기
리액트 프로젝트 생성
npx create-react-app 경로
예) npx create-react-app E:\react-app2
1.강의 소개
2.설치(create-react-app)
설치
#npx create-react-app voca
시작
#npm start
3.컴포넌트, JSX
App.js
import './App.css';
function App() {
const name = "Tom";
const naver = {
name: "네이버",
url: "https://naver.com",
}
return (
<div className="App">
<h1 style={{
color: "#f0f",
backgroundColor: "green"
}}>
Hello, {name}. <p>{2 + 3}</p>
</h1>
<a href={naver.url}>{naver.name}</a>
</div>
);
}
export default App;
4.첫 컴포넌트 만들기
Hello.js
import React from 'react';
import World from './World';
const Hello = () => {
return (
<div>
<h1>Hello</h1>
<World />
<World />
</div>
);
};
export default Hello;
Welcome.js
import React from 'react';
const Welcome = () => {
return <h1>Welcome</h1>;
};
export default Welcome;
World.js
import React from 'react';
const World = () => {
return <h3>World!</h3>
};
export default World;
App.js
import './App.css';
import Hello from './component/Hello';
import Welcome from './component/Welcome';
function App() {
return (
<div className="App">
<Hello />
<Hello />
<Welcome />
<Hello />
</div>
);
}
export default App;
5.CSS 작성법(module css)
1. 직접 CSS 작성
<h1
style={
{
color: '#f00',
borderRight: '2px solid #000',
marginBottom: "30px",
opacity: 1
}
}
>Hello</h1>
App.css
.box{
width: 100px;
height: 100px;
background-color: red;
}
2. index.CSS 에 전체 프로젝트 CSS 작성
3. 모듈로 개별적인 컴포넌트 css 적용

1) Hello.module.css = > Hello 컴포넌트 이름과 동일 + module.css
2) 임포트 import styles from "./Hello.module.css";
3) <div className={styles.box} >Hello</div>
Hello.module.css
.box{
width: 200px;
height: 50px;
background-color: blue;
}
Hello.js
import React from 'react';
import styles from "./Hello.module.css";
const Hello = () => {
return (
<div>
<h1
style={
{
color: '#f00',
borderRight: '2px solid #000',
marginBottom: "30px",
opacity: 1
}
}
>Hello</h1>
<div className={styles.box} >Hello</div>
</div>
);
};
export default Hello;
App.module.css
.box{
width: 100px;
height: 100px;
background-color: red;
}App.js
import './App.css';
import Hello from './component/Hello';
import styles from './App.module.css';
function App() {
return (
<div className="App">
<Hello />
<div className={styles.box} >App</div>
</div>
);
}
export default App;
6.이벤트 처리(Handling Events)

Hello.js
const Hello = () => {
function showName() {
console.log("Mike");
}
function showAge(age) {
console.log(age);
}
function showText(txt) {
console.log(txt);
}
return (
<div>
<h1>Hello</h1>
<button onClick={showName}>Show name</button>
<button onClick={() => {
showAge(30);
}} >Show age</button>
<br /> <br />
<input type="text" onChange={(e) => {
const txt = e.target.value;
showText(txt);
}} />
</div >
);
};
export default Hello;
7.state, useState

Hello.js
import { useState } from "react";
const Hello = () => {
//let name = "Mike";
const [name, setName] = useState("Mike");
// function changeName() {
// const newName = name === "Mike" ? "Jane" : "Mike";
// //document.getElementById("name").innerText = newName;
// setName(newName);
// }
return (
<div>
<h1>state</h1>
<h2 id="name">{name}</h2>
<button onClick={() => {
setName(name === "Mike" ? "Jane" : "Mike");
}}>Change</button>
</div >
);
};
export default Hello;
App.js
import './App.css';
import Hello from './component/Hello';
function App() {
return (
<div className="App">
<Hello />
<Hello />
<Hello />
</div>
);
}
export default App;
8.props

UserName.js
const UserName = ({ name }) => {
return (
<p> Hello {name}</p>
);
};
export default UserName;
Hello.js
import { useState } from "react";
import UserName from "./UserName";
const Hello = ({ age }) => {
//console.log(props);
const [name, setName] = useState("Mike");
//const [age, setAge] = useState(props.age);
const msg = age > 19 ? "성인 입니다." : "미성연자 입니다.";
return (
<div>
<h1>state</h1>
<h2 id="name">
{name} ({age}) : {msg}
</h2>
<UserName name={name} />
<button onClick={() => {
setName(name === "Mike" ? "Jane" : "Mike");
//setAge(age + 1);
}}>Change</button>
</div >
);
};
export default Hello;
App.js
import './App.css';
import Hello from './component/Hello';
function App() {
return (
<div className="App">
<h3>props : properties</h3>
<Hello age={10} />
<Hello age={20} />
<Hello age={30} />
</div>
);
}
export default App;
9.더미 데이터 구현, map() 반복문

더미데이터 => data.json
DayList.js
import dummy from "../db/data.json";
const DayList = () => {
return (
<ul className="list_day">
{dummy.days.map(day => (
<li key={day.id}>
Day {day.day}
</li>
))}
</ul>
);
};
export default DayList;
Day.js
import dummy from '../db/data.json';
const Day = () => {
const day = 1;
const wordList = dummy.words.filter(word => {
return word.day === day
});
return (
<>
<table>
<tbody>
{wordList.map(word => (
<tr key={word.id}>
<td>{word.eng}</td>
<td>{word.kor}</td>
</tr>
))}
</tbody>
</table>
</>
);
};
export default Day;
App.js
import Day from './component/Day';
import DayList from './component/DayList';
import Header from './component/Header';
function App() {
return (
<div className="App">
<Header />
<DayList />
<Day />
</div>
);
}
export default App;
10. 라우터 구현 react-router-dom


라우터 설치
$ yarn add react-router-dom
App.js
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import Day from './component/Day';
import DayList from './component/DayList';
import EmptyPage from './component/EmptyPage';
import Header from './component/Header';
function App() {
return (
<BrowserRouter>
<div className="App">
<Header />
<Routes>
<Route path="/" element={<DayList />} />
<Route path="/day/:day" element={<Day />} />
<Route path={"*"} element={<EmptyPage />} />
</Routes>
</div>
</BrowserRouter >
);
}
export default App;
DayList.js
import dummy from "../db/data.json";
import { Link } from 'react-router-dom';
const DayList = () => {
return (
<ul className="list_day">
{dummy.days.map(day => (
<li key={day.id}>
<Link to={`/day/${day.day}`}>Day {day.day}</Link>
</li>
))
}
</ul >
);
};
export default DayList;
Day.js
import dummy from '../db/data.json';
import { useLocation, useParams } from 'react-router-dom';
const Day = () => {
const location = useLocation();
const params = useParams();
console.log("params ", params, "location ", location);
const { day } = useParams();
console.log("day :", day);
const wordList = dummy.words.filter(word => {
return Number(word.day) === Number(day)
});
return (
<>
<h2>Day {day}</h2>
<table>
<tbody>
{wordList.map(word => (
<tr key={word.id}>
<td>{word.eng}</td>
<td>{word.kor}</td>
</tr>
))}
</tbody>
</table>
</>
);
};
export default Day;
EmptyPage.js
import { Link } from 'react-router-dom';
const EmptyPage = () => {
return (
<div style={{
textAlign: "center",
marginTop: "100px"
}}>
<h2>
잘못된 접근입니다.
</h2>
<Link to="/">돌아가기</Link>
</div>
);
};
export default EmptyPage;
소스 : https://github.com/braverokmc79/React-for-beginners














댓글 ( 4)
댓글 남기기