인프런 : https://www.inflearn.com/course/한입-리액트
소스 : https://github.com/braverokmc79/react-with-one-bite
들어가며
1.강의 및 강사 소개
2. React 소개
3.오픈채팅방 입장 방법 및 비밀번호
JavaScript 기본
4.Hello World
5.변수와 상수
6.자료형과 형 변환
7.연산자
8.조건문
9.함수
10.함수표현식 & 화살표 함수
11.콜백함수
12.객체
13.배열
14.반복문
15.배열 내장 함수
JavaScript 응용
16.Truthy & Falsy
17.삼항 연산자
18.단락회로 평가
19.조건문 업그레이드
20.비 구조화 할당
21.Spread 연산자
22.동기 & 비동기
23.Promise - 콜백 지옥에서 탈출하기
24.async & await - 직관적인 비 동기 처리 코드 작성하기
25.API 호출하기
Node.js 기초
26.Node.js란?
27.Node.js & VsCode 설치하기
28.Node.js Hello World & Common JS
29.Node.js 패키지 생성 및 외부 패키지 사용하기
React.js 기초
30.Why React?
31.Create React App
32.JSX
33.State
34.Props
React 기본 - 간단한 일기장 프로젝트
35.프로젝트 소개
36.React에서 사용자 입력 처리하기
37.React에서 DOM 조작하기 - useRef
38.React에서 배열 사용하기 1 - 리스트 렌더링 (조회)
39.React에서 배열 사용하기 2 - 데이터 추가하기
40.React에서 배열 사용하기 3 - 데이터 삭제하기
41.React에서 배열 사용하기 4 - 데이터 수정하기
42.React Lifecycle 제어하기 - useEffect
43.React에서 API 호출하기
44.React developer tools
45.최적화 1 - useMemo
46.최적화 2 - React.memo
47.최적화 3 - useCallback
48.최적화 4 - 최적화 완성
49.복잡한 상태 관리 로직 분리하기 - useReducer
50.컴포넌트 트리에 데이터 공급하기 - Context
React 실전 프로젝트 - 감정 일기장 만들기
51.프로젝트 완성 예시
52.페이지 라우팅 0 - React SPA & CSR
53.페이지 라우팅 1 - React Router 기본
54.페이지 라우팅 2 - React Router 응용
55.프로젝트 기초 공사 1
56.프로젝트 기초 공사 2
57.페이지 구현 - 홈 (/)
58.페이지 구현 - 일기 쓰기 (/new)
59.페이지 구현 - 일기 수정 (/edit)
60.페이지 구현 - 일기 상세 (/diary)
61.(서브 챕터) 흔히 발생하는 버그 수정 하기
62.LocalStorage를 일기 데이터베이스로 사용하기
63.프로젝트 최적화
64.배포 준비 & 프로젝트 빌드하기
65.Firebase로 프로젝트 배포하기
66.Open Graph 설정하기
React.js 기초
30.Why React?
강의 :
31.Create React App
강의 :
프로젝트 생성 :
$ npx create-react-app reactexam1
import './App.css';
function App() {
let name = "최준호";
return (
<div className="App">
<header className="App-header">
<h2>안녕 리액트</h2>
</header>
</div>
);
}
export default App;
32. JSX
강의 :
App.js
import React from 'react';
import './App.css';
import MyFooter from './MyFooter';
import MyHeader from './MyHeader';
function App() {
let name = "홍길동";
const style = {
App: {
backgroundColor: "black",
},
h2: {
color: "green",
},
};
const number = 5;
return (
// <React.Fragment>
//<>
<div className="App" style={style.App}>
<MyHeader />
<header className="App-header">
<h2 style={style.h2}>안녕 리액트 {name}</h2>
<b>
{number} 는 {number % 2 === 0 ? "짝수" : "홀수"}
</b>
</header>
</div>
//</>
// </React.Fragment>
);
}
export default App;
32. State
강의 :
Counter.js
import { useState } from "react";
const Counter = () => {
//0에서 출발
//1씩 증가하고
//1씩 감소하는
//count 상태
const [count, setCount] = useState(0);
const onIncrease = () => {
setCount(count + 1);
}
const onDecrease = () => {
setCount(count - 1);
}
const [count2, setCount2] = useState(0);
const onIncrease2 = () => {
setCount2(count2 + 1);
}
const onDecrease2 = () => {
setCount2(count2 - 1);
}
return (
<div>
<h2>{count}</h2>
<button onClick={onIncrease}>+</button>
<button onClick={onDecrease}>-</button>
<br /><br />
<h2>{count2}</h2>
<button onClick={onIncrease2}>+</button>
<button onClick={onDecrease2}>-</button>
</div>
)
}
export default Counter;
App.js
import React from 'react';
import './App.css';
import Counter from './Counter';
import MyHeader from './MyHeader';
function App() {
return (
<div>
<MyHeader />
<Counter />
</div>
);
}
export default App;
33. Props
강의 :
App.js
import React from 'react';
import './App.css';
import Container from './Container';
import Counter from './Counter';
import MyHeader from './MyHeader';
function App() {
const number = 5;
const counterProps = {
a: 1,
b: 2,
c: 4,
e: 5
}
return (
<Container >
<div>
<MyHeader />
<Counter {...counterProps} />
</div>
</Container>
);
}
export default App;
Counter.js
import { useState } from "react";
import OddEvenResult from "./OddEvenResult";
const Counter = ({ initialValue }) => {
//console.log(initialValue);
const [count, setCount] = useState(initialValue);
const onIncrease = () => {
setCount(count + 1);
}
const onDecrease = () => {
setCount(count - 1);
}
return (
<div>
<h2>{count}</h2>
<button onClick={onIncrease} >+</button>
<button onClick={onDecrease}>-</button>
<OddEvenResult count={count} />
</div>
)
}
Counter.defaultProps = {
initialValue: 0
}
export default Counter;
OddEvenResult.js
const OddEvenResult = ({ count }) => {
console.log("count");
return <>{count % 2 === 0 ? "짝수" : "홀수"}</>
}
export default OddEvenResult;
Container.js
const Container = ({ children }) => {
console.log(children);
return (
<div style={{ margin: 20, padding: 20, border: "1px solid grey" }}>
{children}
</div>
);
}
export default Container;














댓글 ( 4)
댓글 남기기