
⇒ Props
⇒ 코드
<!DOCTYPE html>
<html>
<body>
<div id="root"></div>
</body>
<script src="https://unpkg.com/react@17.0.2/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<!-- babel js -->
<script type="text/babel">
const root = document.getElementById("root");
function Btn({ text, big }) {
return (
<button
style={{
backgroundColor: "teal",
color: "white",
padding: "10px 20px",
border: 0,
borderRadius: "10px",
marginRight: "5px",
fontSize: big ? 18 : 16,
}}
>
{text}
</button>
);
}
const App = () => {
return (
<div>
<Btn text="Save Changes" big={true} />
<Btn text="Continue" />
</div>
);
};
ReactDOM.render(<App />, root);
</script>
</html>
⇒ 결과

⇒ Memo
⇒ 코드
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>replit</title>
</head>
<body>
<div id="root"></div>
</body>
<script src="https://unpkg.com/react@17.0.2/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">
const root = document.getElementById("root");
function Btn({ buttonName, changeName }) {
console.log(buttonName, "redered");
return (
<button
onClick={changeName}
style={{
backgroundColor: "teal",
color: "white",
padding: "10px 20px",
border: 0,
borderRadius: "10px",
marginRight: "5px",
}}
>
{buttonName}
</button>
);
}
const MemorizedBtn = React.memo(Btn);
const App = () => {
const [name, setName] = React.useState("Save Changes");
const changeName = () => setName("Revert Changes");
return (
<div>
<MemorizedBtn buttonName={name} changeName={changeName} />
<MemorizedBtn buttonName={"Confirm"} />
</div>
);
};
ReactDOM.render(<App />, root);
</script>
</html>
⇒ 결과


⇒ Prop Types
⇒ 코드
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>replit</title>
</head>
<body>
<div id="root"></div>
</body>
<script src="https://unpkg.com/react@17.0.2/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@17.0.2/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/prop-types@15.7.2/prop-types.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<script type="text/babel">
function Btn({ buttonName, fontSize = 16 }) {
return (
<button
style={{
backgroundColor: "teal",
color: "white",
padding: "10px 20px",
border: 0,
borderRadius: "10px",
marginRight: "5px",
fontSize,
}}
>
{buttonName}
</button>
);
}
Btn.propTypes = {
buttonName: PropTypes.string.isRequired,
fontSize: PropTypes.number,
};
const App = () => {
return (
<div>
<Btn buttonName={"Save Changes"} fontSize={20} />
<Btn buttonName={"Confirm"} />
</div>
);
};
const root = document.getElementById("root");
ReactDOM.render(<App />, root);
</script>
</html>
⇒ 결과

⇒ 학습 내용