Props, State๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉ๋๋ ๊ฐ๋ ์ด๋ค.
โ
๋ฆฌ์กํธ๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ก์ฐ(one-way data flow)
props๋ฅผ ๋ฐ์ ์์ ์ปดํฌ๋ํธ๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๊ณ , ์์ ์ปดํฌ๋ํธ๋ก ๊ฐ์ ์ ๋ฌํ ์ ์๋ค.
ํ์ ์ปดํฌ๋ํธ์์์ ๋ณํ๋ก ์ธํด ์์ ์ปดํฌ๋ํธ๊ฐ ๋ณํํด์ผ ํ๋ ๊ฒฝ์ฐ ์์ ์ปดํฌ๋ํธ์ state๋ฅผ ๋ณ๊ฒฝํ๋ ํจ์๋ฅผ ์ ์ํ๋ฉด ๋๋ค.
โ
Props๋ ์ปดํฌ๋ํธ์์ ์ฌ์ฉ ํ ๋ฐ์ดํฐ ์ค ๋ณ๋๋์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉ๋๋ค.
Props
- props๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ๊ฐ ์์ ์ปดํฌ๋ํธ์๊ฒ ๊ฐ์ ์ ๋ฌํ ๋ ์ฌ์ฉ -> (์์ ์ ์ฅ์์) ์ฝ๊ธฐ ์ ์ฉ
- ์์ ์ปดํฌ๋ํธ์์๋ props๋ฅผ ๋ฐ๊ธฐ๋งํ๊ณ , ๋ฐ์์จ prpos๋ฅผ ์ง์ ์์ ํ ์ ์๋ค.
- defaultProps: props์ ๊ฐ์ ์ ๋ ฅํด์ฃผ์ง ์์์ ๋, ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํด ๋๋ ๊ธฐ๋ฅ์ด๋ค.
ํด๋์คํ ์ปดํฌ๋ํธ Props
// MyName.js
import React, { Component } from 'react';
import { Text, View,} from 'react-native';
class MyName extends Component {
static defaultProps = {
name: 'Lee'
};
render() {
return (
<View>
<Text>์๋
ํ์ธ์! ์ ์ด๋ฆ์ {this.props.name}์
๋๋ค.</Text>
</View>
);
}}
export default MyName
// App.js
import React, { Component } from 'react';
import MyName from './MyName';
class App extends Component{
render(){
return( <MyName name="jun"/>);
}}
export default App;
ํจ์ํ ์ปดํฌ๋ํธ Props
// MyName.js
import React from 'react';
import { Text, View,} from 'react-native';
const MyName = ({ name }) => {
return (
<View>
<Text>์๋
ํ์ธ์! ์ ์ด๋ฆ์ {name}
์
๋๋ค.</Text>
</View>
)};
MyName.defaultProps = {
name: 'Lee'
};
export default MyName;
// App.js
import React, { Component } from 'react';
import MyName from './MyName';
class App extends Component {
render() {
return <MyName name="jun" />;
}}
export default App;
์ฝ๋ ์ค๋ช
๋ถ๋ชจ ์ปดํฌ๋ํธ์ธ App.js์์ ์์ ์ปดํฌ๋ํธ์ธ MyName.js์ name์ jun์ด๋ผ๋ ๊ฐ์ ์ค๋ค.
๋ง์ฝ, ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ์ name์ ๊ฐ์ ์ฃผ์ง ์์๋ค๋ฉด defaultProps์ name์ ์ค์ ๋์ด ์๋ Lee๊ฐ ์ ์ฉ๋์ด ์คํ ํ๋ฉด์ "์๋ ํ์ธ์! ์ ์ด๋ฆ์ Lee์ ๋๋ค."๋ผ๊ณ ๋์จ๋ค.
ํ์ง๋ง, ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ์ธ MyName์ name๊ฐ์ Jun์ด๋ผ๋ ๊ฐ์ ๋ฃ์ด์คฌ๊ธฐ ๋๋ฌธ์ ์คํ ํ๋ฉด์๋ "์๋ ํ์ธ์! ์ ์ด๋ฆ์ Jun์ ๋๋ค."๋ผ๊ณ ๋์จ๋ค.
โ
ํด๋์คํ ์ปดํฌ๋ํธ์ ํจ์ํ ์ปดํฌ๋ํธ์ ์ฝ๋๋ฅผ ๋น๊ตํด๋ณด๋ฉด ํ์คํ ํจ์ํ ์ปดํฌ๋ํธ๊ฐ ๋ถํ์ํ ์ฝ๋๊ฐ ์ค์ด ๊ฐ๊ฒฐํ๋ค. ๋ํ ํจ์ํ ์ปดํฌ๋ํธ๊ฐ ์ด๊ธฐ ๋ง์ดํธ ์๋๊ฐ ๋ ๋น ๋ฅด๋ค.