โช๏ธ props: properties(์์ฑ)
โช๏ธ ๋จ์ด ๋ป ๊ทธ๋๋ก ์ปดํฌ๋ํธ์ ์์ฑ๊ฐ์ด๋ค.
โช๏ธ props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ง๋๊ณ ์๋ ๊ฐ์ฒด์ด๋ค.
โช๏ธ props๋ฅผ ์ด์ฉํด ์ด๋ค ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ด๋ ๋ชจ๋ ์์ ์ปดํฌ๋ํธ์ ์ ๋ฌํ ์ ์๋ค.(๋ณ์, state๊ฐ, event handler ๋ฑ)
โช๏ธ {{ }}
: ๊ฒ ์ค๊ดํธ๋ html์ jsx์์ ์ฌ์ฉํ๊ธฐ ์ํจ.
์ ์ค๊ดํธ๋ ๊ฐ์ฒด
โช๏ธ ์์์ props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ง๋๊ณ ์๋ ๊ฐ์ฒด๋ผ๊ณ ํ์๋ค.
โช๏ธ ํจ์ ์ปดํฌ๋ํธ์์ props, ์ฆ ์ปดํฌ๋ํธ์ ์์ฑ์ ์ด๋ป๊ฒ ์ ์ํ๋์ง ๋ณด์
// Parent.js import React, { useState } from 'react'; import Child from '../pages/Child/Child'; function Parent() { const [color, setColor] = useState('red'); return ( <div> <h1>Parent Component</h1> <Child /> </div> ; } export default Parent;
โช๏ธ Parent.js
๋ถ๋ชจ ์ปดํฌ๋ํธ์ด๋ค.
โช๏ธ ๋ถ๋ชจ ์ปดํฌ๋ํธ ์์์ <Child />
์ปดํฌ๋ํธ๋ฅผ import ํ <h1>
ํ๊ทธ ์๋์ ์์นํด์ฃผ์๋ค.
โช๏ธ ๋ถ๋ชจ์ state์ ์๋ ๋ฐ์ดํฐ๋ฅผ <Child />
์ปดํฌ๋ํธ์๊ฒ props๋ฅผ ํตํด ๋๊ฒจ๋ณด๋๋ก ํ์.
// Parent.js import React, { useState } from 'react'; import Child from '../pages/Child/Child'; function Parent() { const [color, setColor] = useState('red'); return ( <div> <h1>Parent Component</h1> <Child titleColor={color} /> </div> ); export default Parent;
โช๏ธ ์์ ์ปดํฌ๋ํธ์ props๋ก titleColor
์์ฑ์ ์์ฑํด์ฃผ์๋ค.
โช๏ธ titleColor
์ ๊ฐ์ผ๋ก color
, ์ฆ ๋ถ๋ชจ ์ปดํฌ๋ํธ์ state์ธ color
๊ฐ์ ์ ๋ฌํด์ฃผ์๋ค.
โช๏ธ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก props๋ฅผ ํตํด ๋ถ๋ชจ ์ปดํฌ๋ํธ ๋ด๋ถ์ state ๊ฐ์ ์์ ์ปดํฌ๋ํธ์๊ฒ ์ ๋ฌํ ์ ์๋ค.
โช๏ธ <Child />
์ปดํฌ๋ํธ ๋ด๋ถ์์ ์ ๋ฌ ๋ฐ์ props ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ํ์ธํด๋ณด์
โช๏ธ ์ปดํฌ๋ํธ์ props๋ ๊ฐ์ฒด์ด๋ค.
โช๏ธ Child.js
๋ด๋ถ์์ props ๊ฐ์ฒด๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง ํ์ธํด๋ณด๋๋ก ํ์
// Child.js import React from 'react'; function Child(props) { // console.log(props); return ( <div> <h1 style={{color : props.titleColor}}>Child Component</h1> </div> ); } export default Child;
โช๏ธ <child />
์ปดํฌ๋ํธ ๋ด๋ถ์ <h1>
ํ๊ทธ๊ฐ ์๋ค
โช๏ธ ํด๋น ํ๊ทธ์ ๊ธ์ ์์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ์ state๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ํด์ฃผ๋๋ก ํ์
โช๏ธ ํจ์ ์ปดํฌ๋ํธ๋ ๋ถ๋ชจ๊ฐ ์ ๋ฌํ props๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค.
โช๏ธ return
๋ฌธ ์์์ props
๊ฐ์ console.log
๋ก ํ์ธํ๋ค.
โช๏ธ ๊ฒฐ๊ณผ ํ์ธ ์ props ๊ฐ์ฒด ์์ ๋ถ๋ชจ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๊ฐ key-value ํํ๋ก ๋ด๊ฒจ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
<h1 style={{color : props,titleColor}}>Child Component</h1> // props : ํด๋น ์ปดํฌ๋ํธ์ props ๊ฐ์ฒด // props.titleColor : props ๊ฐ์ฒด์ ํน์ key(titleColor)๊ฐ. ์ฆ "red"
โช๏ธ ์ปดํฌ๋ํธ ๋ด๋ถ์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ props ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ props ๊ฐ์ฒด์ ํน์ ํค๊ฐ, ์ฆ props.titleColor
์ด๋ ๊ฒ ์์ฑ
โช๏ธ ๋ค์์ผ๋ก๋ props ๊ฐ์ฒด๋ฅผ ํตํด ๋ถ๋ชจ์์ ์ ์ํ event handler๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์
โ๏ธprops๋ฅผ ํตํ event handler ์ ๋ฌ
// parent.js import React, { useState } from 'react'; import Child from '../pages/Child/Child'; function Parent() { const [color, setColor] = useState('red'); return ( <div> <h1>Parent Componetn</h1> <Child titleColor={color} changeColor={() => setColor('blue')} /> </div> ); export default Parent;
โช๏ธ props ๊ฐ์ฒด๋ฅผ ํตํด state ๋ฐ์ดํฐ ๋ฟ๋ง ์๋๋ผ ๋ถ๋ชจ์์ ์ ์ํ event handler ํจ์๋ ๋๊ฒจ์ค ์ ์๋ค.
โช๏ธ props์ changeColor
๊ฐ์ผ๋ก Parent ํจ์์์ ์ ์ํ setColor
ํจ์ ์์ฒด๋ฅผ ๋๊ฒจ์ฃผ๊ณ ์๋ค.
โช๏ธ <Child />
์ปดํฌ๋ํธ์์ ์ด๋ป๊ฒ props๋ก ์ ๋ฌ๋ฐ์ handleColor
ํจ์๋ฅผ ํ์ฉํ๋์ง ์ดํด๋ณด์
// Child.js import React from 'react'; function Child(props) { return ( <div> <h1 style={{color : props.titleColor}}>Child Component</h1> <button onClick={props,changeColor}>Click</button> </div> ); } export default Child;
โช๏ธ <child />
์ปดํฌ๋ํธ ๋ฐฐ์ฐ์ <button>
ํ๊ทธ๊ฐ ์๋ค.
โช๏ธ ๋ค์์ ์์์ ๋ฐ๋ผ์ ์ฝ๋๊ฐ ์คํ๋๋ค
โช๏ธ <button>
์์์์ <onClick>
์ด๋ฒคํธ ๋ฐ์
โช๏ธ ์ด๋ฒคํธ ๋ฐ์
โช๏ธ props ๊ฐ์ฒด์ changeColor
, ์ฆ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ setColor
ํจ์ ์คํ
โช๏ธ setColor
ํจ์ ์คํ ์ state์ color
๊ฐ์ด blue๋ก ๋ณ๊ฒฝ
โช๏ธ <Child />
์ปดํฌ๋ํธ์ ๋ณ๊ฒฝ๋ state ๋ฐ์ดํฐ (color
)์ ๋ฌ
โช๏ธ props.titleColor
๋ฅผ ๊ธ์ ์์์ผ๋ก ์ง์ ํ๋ <h1>
ํ์ดํ ์์ ๋ณ๊ฒฝ