npm install npx -g
🍌 리액트를 이용한 프론트페이지 구성 ⇒ git ⇒ github ⇒ 배포
npx create-react-app movie_app
폴더 열기
로 할 것 # Movie App 2023
React JS Fundamentals Course 2023 MultiCampus
cd movie_app
npm start
ctrl + c
()
로 묶어두기import React from 'react';
function App() {
return (<div>
<h1>
Hello!!!!! React</h1></div>);
}
export default App;
App() 함수
정의해서index.html
root 부분으로 넘어오게 됨<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
src ⇒ Potato.js 만들기
본문 작성하기
import React from "react";
function Potato() { //Potato 컴포넌트의 기본틀 중요한 규칙 : 컴포넌트 정의 시 첫글자 대문자로 시작
return <h3>I love React!</h3>
}
export default Potato; //export default 이름
jsx는 부모요소가 꼭 하나 이상 있어야 함
App.js
에 Potato 추가import React from "react";
import Potato from "./Potato";
function App() {
return (
<div>
<h1>Hello!!!!! React</h1>
<Potato />
</div>
);
}
export default App;
b. index.js
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";
ReactDOM.render(<App />, document.getElementById("root"));
삭제하는 법
import React from "react";
function Potato() {
return <h1> I like potato! </h1>;
}
function App() {
return (
<div>
<h1>Hello!!!!! React</h1>
<Potato />
</div>
);
}
export default App;
import React from "react";
function Food(props) {
//app에서 보낸 인자를 받아보기
console.log(props);
return <h1> I like food! </h1>;
}
function App() {
return (
<div>
<h1>Multi Food</h1>
<Food
fav="kimchi"
something={true}
papapapa={["hello", 1, 2, 3, 4, 5, true]}
/>
</div>
);
}
export default App;
import React from "react";
function Food(props) {
//app에서 보낸 인자를 받아보기
console.log(props);
return <h1> I like {props.fav} </h1>;
}
function App() {
return (
<div>
<h1>Multi Food</h1>
<Food fav="kimchi" />
</div>
);
}
export default App;
import React from "react";
function Food({ fav }) {
//app에서 보낸 인자를 받아보기
//{ fav } = props;
return <h1> I like {fav} </h1>;
}
function App() {
return (
<div>
<h1>Multi Food</h1>
<Food fav="kimchi" />
<Food fav="ramen" />
<Food fav="snacks" />
<Food fav="kim" />
</div>
);
}
export default App;
foodILike
라는 이름의 배열을 선언하고, 다양한 음식 정보를 객체 형태로 담아둔다.name
)과 이미지 URL(image
)이 포함**fuction App()
에 foodILike에 있는 것들 리턴하기**Food
컴포넌트로 넘어가게 된다.{}
로 인자 받아오기{}
내부에서 프롭스를 디스트럭처링하여 사용하는 것은 이렇게 인자를 효과적으로 받아오기 위한 방법import React from "react";
function Food({ name, picture }) {
//app에서 보낸 인자를 받아보기
//{ fav } = props;
return (
<div>
<h2> I like {name} </h2>
<img src={picture}></img>
</div>
);
}
const foodILike = [
{
name: "kimchi",
image:
"https://recipe1.ezmember.co.kr/cache/recipe/2020/10/14/954d0e47cad6ce0f6bda194b5a4075b21.jpg",
},
{
name: "ramen",
image:
"https://health.chosun.com/site/data/img_dir/2022/09/23/2022092301908_0.jpg",
},
{
name: "jeyuk bokkeum",
image:
"https://recipe1.ezmember.co.kr/cache/recipe/2017/07/01/7ef9cedcbe5cceb5d3b17c81b305a9c21.jpg",
},
{
name: "kimbab",
image:
"https://recipe1.ezmember.co.kr/cache/recipe/2015/04/04/0461907459756bc3a56472da407a1a9d1.jpg",
},
];
function App() {
return (
<div>
{foodILike.map((dish) => (
<Food name={dish.name} picture={dish.image} />
))}
</div>
);
}
function renderFood(dish) {
return <Food name={dish.name} picture={dish.image} />;
}
function App() {
return <div>{foodILike.map((dish) => renderFood(dish))}</div>;
}
function Festival({ name, region, picture, rating }) {
//app에서 보낸 인자를 받아보기
//{ fav } = props;
return (
<div>
<h2> {name} </h2>
<h3> 지역 : {region} </h3>
<StartRating rating={rating} />
<img src={picture} alt={name}></img>
</div>
);
}
function StartRating({ rating }) {
const maxRating = 5; // 별의 최대 개수
const filledStars = Math.floor(rating); // 채워진 별의 개수
const emptyStars = maxRating - filledStars; // 빈 별의 개수
const stars = [];
for (let i = 0; i < filledStars; i++) {
stars.push(
<span key={i} className="star filled">
★
</span>
);
}
for (let i = 0; i < emptyStars; i++) {
stars.push(
<span key={filledStars + i} className="star">
☆
</span>
);
}
return <div className="star-rating">{stars}</div>;
}
프로젝트를 위한 리액트 기본 문법 배우는 중 근데.. 스프링은 진짜 너무 얇게 배운듯 ㅠㅠㅠㅠㅠ 프로젝트 때 깊게 파고 들어야 겠다... cs 스터디꺼도 공부해야 하고 프로젝트 회의도 해야하고 거기다 주말에 콘서트 + 이르바이트 12시간으로 몸살로 죽겠다.. 힘내자