어떠한 값을 컴포넌트에게 전달해줘야 할 때 사용한다.
먼저 vite로 React 프로젝트를 생성했다.
yarn create vite week1
cd week1
yarn
yarn dev 또는 yarn vite
간단하게 Card를 만들어보았다.
🔻App.jsx
import { React } from "react";
import BaseCard from "./BaseCard";
import Wrapper from "./Wrapper";
function App() {
const style = {
display: "flex",
justifyContent: "center",
marginTop: "50px",
};
return (
<div style={style}>
<BaseCard name="이서영" age="23" study="React" color="red" />
</div>
);
}
export default App;
🔻BaseCard.jsx
import React from "react";
function BaseCard(props) {
const style = {
display: "flex",
flexDirection: "column",
gap: "5px",
width: "fit-content",
padding: "30px",
borderRadius: "15px",
backgroundColor:'#fff',
boxShadow: "2px 2px 10px gray",
};
return (
<div style={style}>
<h1>Hello, {props.name}🥳</h1>
<p>Age: {props.age}</p>
<strong>
I'm currently Studying...{" "}
<span style={{ color: props.color }}>{props.study}</span>
</strong>
</div>
);
}
export default BaseCard;
컴포넌트에 props 를 지정하지 않았을 때 기본적으로 사용할 값을 설정하고 싶다면 컴포넌트에 defaultProps 라는 값을 설정하면 된다.
import React from "react";
function BaseCard(props) {
const style = {
/*...중략...*/
};
return (
<div style={style}>
<h1>Hello, {props.name}🥳</h1>
<p>Age: {props.age}</p>
<strong>
I'm currently Studying...{" "}
<span style={{ color: props.color }}>{props.study}</span>
</strong>
</div>
);
}
BaseCard.defaultProps = {
name: "홍길동",
};
export default BaseCard;
<BaseCard age="23" study="React" color="red" />
🔻App.jsx
import { React } from "react";
import BaseCard from "./BaseCard";
import Wrapper from "./Wrapper";
function App() {
const style = {
display: "flex",
justifyContent: "center",
marginTop: "50px",
};
return (
<Wrapper style={style}>
<BaseCard name="이서영" age="23" study="React" color="red" />
</Wrapper>
);
}
export default App;
🔻Wrapper.jsx
import React from 'react'
function Wrapper({ children}) {
const style = {
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
margin: '30px auto',
boxShadow: '2px 2px 10px gray',
width: "500px",
height: "500px",
borderRadius:'15px',
backgroundColor: 'azure',
}
return (
<div style={style}>
{ children}
</div>
)
}
export default Wrapper
+) props는 writable이 false라서 값을 변경할 수 없다.