๐ ๋ชฉ์ฐจ
- Introduction
- What is Props
- Implementation Props
- Children Props
- PropTypes
- DefaultProps
- Conclsution
๐ Introduction
์๋ ํ์ธ์. ์ค๋์ ์ด์ react props์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ํด๋น ์ฝ๋๋ ์ฌ๊ธฐ์ ํ์ธํ ์ ์์ต๋๋ค.
๐ What is Props
props๋ properties
์ ์ค์๋ง์
๋๋ค. ์ด props๋ ์์์ ๋ถ๋ชจ์์๊ฐ ํ์์ธ ์์์์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ์ฐ์
๋๋ค.
๐ Implementation Props
๊ฐ๋จํ๊ฒ App.js ์์ Hello.js์ props๋ก ์ ๋ฌ์ ํด๋ณด๊ฒ ์ต๋๋ค.
// App.js
import React from "react";
import Hello from "./Hello";
import Wrapper from "./Wrapper";
function App() {
return (
<div>
<Hello name="react" color="red" /> โญ๏ธ์ด๋ ๊ฒ ์์์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค.
<Hello color="blue" />
</div>
);
}
export default App;
// Hello.js
import React from "react";
function Hello({ name, color }) {
return <div style={{ color }}>Hi, {name}</div>;
}
// ๋ง์ฝ ํด๋น props๊ฐ ์๋ค๋ฉด ๊ธฐ๋ณธ์ ์ธ props ์ธํ
์ ์ฌ๊ธฐ์ ํด์ค์ ์์ต๋๋ค.
Hello.defaultProps = {
name: "์ด๋ฆ ์์",
};
export default Hello;
๐ Children Props
๋ํ ์์ props๋ผ๊ณ ํ๋๊ฒ์ด ์๋๋ฐ ์ด๊ฑด vue์์์ slot๊ฐ ๋น์ทํฉ๋๋ค. ์ด๋ฒ์ Wrapper.js๋ฅผ ํ๋ฒ ์ ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
// App.js
import React from "react";
import Hello from "./Hello";
import Wrapper from "./Wrapper";
function App() {
return (
<Wrapper>
<Hello name="react" color="red" /> // ์ด๊ฑธ children์ผ๋ก ์ ๋ฌํ ์ ์์ต๋๋ค.
<Hello color="blue" /> // ์ด๊ฒ๋ํ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
</Wrapper>
);
}
export default App;
import React from "react";
function Wrapper({ children }) {
const style = {
border: "2px solid black",
padding: 16,
};
return <div style={style}>{children}</div>; // โญ๏ธ children์ ๋๋๋ง ํด์ฃผ๋ ๋ชจ์ต์ ๋ณผ์์์ต๋๋ค.
}
export default Wrapper;
๐ PropTypes
๋จผ์ prop-types๋ฅผ ์ค์นํด์ฃผ์ด์ผ ํฉ๋๋ค.
yarn add prop-types
์ด๋ ๊ฒ ์ค์นํด์ฃผ์๋ค๋ฉด ์ด๋ ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
import React, { useState } from 'react';
import PropTypes from 'prop-types';
function CountDisplay({ count }) {
return (
<h1>{count}</h1>
);
}
CountDisplay.propTypes = {
count: PropTypes.number
}
PropTypes์์๋ number, string, boolean, object, array... ์ ๊ฐ์ ํ์ ์ด ์๊ณ required๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด
import React, { useState } from 'react';
import PropTypes from 'prop-types';
function CountDisplay({ count }) {
return (
<h1>{count}</h1>
);
}
CountDisplay.propTypes = {
count: PropTypes.element.isRequired
}
์ด๋ ๊ฒ ์ฌ์ฉํด์ฃผ๋ฉด ๋ฉ๋๋ค.
๐ DefaultProps
์ด๊ธฐ๊ฐ์ ์ค์ ํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
import React, { useState } from 'react';
function CountDisplay({ count }) {
return (
<h1>{count}</h1>
);
}
CountDisplay.defaultProps = {
count: 0,
}
๐ Conclusion
์ค๋์ ์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ react์ props์ ๋ํด์ ์์๋ณด์์ต๋๋ค. class์ผ๋์ react๋ง์ ๋ด์ ๊ทธ๋ฐ์ง ์ ๊ธฐํ ๋ฌธ๋ฒ๋ค์ด ๋ง์ด ์๊ธฐ๊ณ ๋ ๊ฐ๊ฒฐํด์ง๊ฒ ์ข์๊ฑฐ ๊ฐ๋ค์. ๊ทธ๋ผ ๋ค์ ํฌ์คํ ์์ ๋ง๋์~~
'React Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React - ๋ฐฐ์ด ๋๋๋ง (0) | 2020.12.03 |
---|---|
React - useRef ํน์ ๋ ์ง์ ํ๊ธฐ (0) | 2020.12.02 |
React - input ๊ด๋ฆฌ (0) | 2020.12.01 |
React - useState (0) | 2020.11.12 |
React - Conditional Rendering (0) | 2020.11.10 |