Study_Develop/React Native

[RN] ๋ฐ์ดํ„ฐ ํšจ๊ณผ์ ์œผ๋กœ ๋„˜๊ธฐ๊ณ  ๋ฐ›์•„์˜ค๊ธฐ - ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ or param์ „์†ก(feat. props์™€ param์šฉ์–ด ํ˜ผ๋™)

hiijihyun 2023. 9. 3. 15:54
๋ฐ˜์‘ํ˜•

 
์ œ๋ชฉ์—๋„ ์ ์—ˆ๋‹ค ์‹œํ”ผ
์ด ๊ธ€์—์„œ๋Š”
props์™€ param์˜ ์ฐจ์ด๋ฅผ ํ˜ผ๋™ํ•ด์„œ ์ƒ๊ธด ๋ฌธ์ œ์™€ 
 
๋˜, param์œผ๋กœ ๋ฐ์ดํ„ฐ ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ์™€ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
๋ญ ๊ทธ๋Ÿฐ ๊ฒƒ๋“ค์˜ ์ฐจ์ด๋ฅผ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋‹ค.
 
๋ฌผ๋ก  ์•„์ฃผ ์ดˆ๋ณด์ž ์ ์ธ ์‹ค์ˆ˜๋ผ๊ณ  ์ƒ๊ฐ์ด ๋“ค์ง€๋งŒ
์ดˆ๋ณด์ž ๋งž๋‹ค.ใ…‹
 
๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ์ง€๊ธˆ ์ด ๊ธ€์—์„œ 
๋งž๋‹ค๊ณ  ์ ์–ด๋†“์€ ๊ธ€์ด 
๋˜ ๋‚˜์ค‘์— ๋ณด๋ฉด ์ž˜ ๋ชป ์ ์–ด๋‘” ์ •๋ณด๊ฐ€ ์žˆ์„ ๊นŒ ๋‘๋ ต์ง€๋งŒ ใ…Žใ…Ž
๊ทธ๋ž˜๋„ ์ผ๋‹จ ๊ธฐ๋กํ•ด๋‘”๋‹ค.
 
 

 
์œ„์˜ ์‚ฌ์ง„์€ ์ตœ๊ทผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ
props drilling ๋ผ๋Š” ๋ฌธ์ œ ๊ทธ๋ฆฌ๊ณ  ์ƒํƒœ๊ด€๋ฆฌ ๊ด€๋ จํ•ด์„œ ๊ธ€์„ ์“ธ ๋•Œ์—
๋‚ด๊ฐ€ ์–ด๋–ค ๋ถ€๋ถ„์—์„œ props drilling๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋Š”์ง€์— ๋Œ€ํ•ด
๊ธฐ์žฌํ•œ ๋ถ€๋ถ„์ด๋‹ค.
 
๊ทธ๋Ÿฐ๋ฐ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ,
์ €๊ฑด props ์ „์†ก์ด ์•„๋‹Œ, param์ „์†ก์˜ ์ฝ”๋“œ์ด๋‹ค.
 
props์™€ params
๋‚œ ๋‘˜์ด ๋น„์Šทํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ 
์ž‘๋™ ๋˜๋Š” ์ค„ ์•Œ์•˜๋‹ค.
 
๋‘˜ ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ๋•Œ์— ๋ถˆํ•„์š”ํ•œ ํ™”๋ฉด์—๋„ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋˜‘๊ฐ™์ด
๋„˜๊ฒจ์ฃผ์–ด์•ผ ํ•˜๋Š” ์ค„ ์•Œ์•˜๊ณ ,
์ƒ์œ„-ํ•˜์œ„ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ์ค„ ์•Œ์•˜๋‹ค.
๊ทธ๋ž˜์„œ params์ „์†ก์—์„œ๋„ drilling๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ๋˜๋Š” ์ค„ ์•Œ์•˜๊ณ 
 
ํ•˜์ง€๋งŒ ๋‘ ๊ฐœ์˜ ์šฉ์–ด์—๋Š” ํ™•์‹คํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์—ˆ๊ณ ,
๋‚ด๊ฐ€ ์ž˜๋ชป ์•Œ๊ณ ์žˆ์—ˆ๋˜ ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค.
 
 

props์ „์†ก์ด๋ž€?

 
: ์ƒ์œ„ ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ํ•˜์œ„ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.
 

// ParentComponent.js
import React from 'react';
import ChildComponent from './ChildComponent';

const ParentComponent = () => {
  const dataToPass = 'Hello from parent';
  
  return <ChildComponent propData={dataToPass} />;
};

export default ParentComponent;
// ChildComponent.js
import React from 'react';
import { Text } from 'react-native';

const ChildComponent = ({ propData }) => {
  return <Text>{propData}</Text>;
};

export default ChildComponent;

 

๋งค๊ฐœ๋ณ€์ˆ˜ ์ „์†ก(React Navigation)

 
: ์„œ๋กœ ๋‹ค๋ฅธ ํ™”๋ฉด์ด๋‚˜ ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
 
: React Navigation์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™”๋ฉด ๊ฐ„์„ ํƒ์ƒ‰ํ•  ๋•Œ ํ•œ ํ™”๋ฉด์—์„œ ๋‹ค๋ฅธ ํ™”๋ฉด์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
 
: ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํƒ์ƒ‰ ์ปจํ…์ŠคํŠธ์—๋งŒ ์ ์šฉ๋˜๋ฉฐ ์ƒ์œ„-ํ•˜์œ„ ๊ด€๊ณ„๋กœ ์ œํ•œ๋˜์ง€ ์•Š๋Š”๋‹ค.
๊ตฌ์„ฑ ์š”์†Œ ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ ์ง์ ‘์ ์ธ ์ƒ์œ„-ํ•˜์œ„ ๊ด€๊ณ„๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
 

// ScreenA.js
import React from 'react';
import { Button } from 'react-native';

const ScreenA = ({ navigation }) => {
  const dataToPass = 'Hello from Screen A';

  return (
    <Button
      title="Go to Screen B"
      onPress={() => {
        navigation.navigate('ScreenB', { paramData: dataToPass });
      }}
    />
  );
};

export default ScreenA;
// ScreenB.js
import React from 'react';
import { Text } from 'react-native';

const ScreenB = ({ route }) => {
  const paramData = route.params.paramData;

  return <Text>{paramData}</Text>;
};

export default ScreenB;

 
์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ 
React Navigation์—์„œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜(params)๋ฅผ ๋ณด๋‚ผ ๋•Œ 
์ค‘๊ฐ„ ํ™”๋ฉด์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ํ™”๋ฉด์œผ๋กœ ์ง์ ‘ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋งค์ปค๋‹ˆ์ฆ˜์ด๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
 
 
๊ทธ๋Ÿฐ๋ฐ ๋ฌธ๋“ ๋“  ์ƒ๊ฐ..
 

๊ทธ๋Ÿผ ์ค‘๊ฐ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฑฐ์น  ํ•„์š” ์—†๋Š” param์œผ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค ์ „๋‹ฌํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€?
์ƒํƒœ๊ด€๋ฆฌ๋Š” ๊ทธ๋Ÿผ ์™œ ํ•„์š”ํ•˜์ง€?

 
๋‹ค์‹œ ํ•œ๋ฒˆ ๋งํ•˜์ง€๋งŒ
์ •๋ง ์ดˆ๋ณด์ž ์ ์ธ ์ƒ๊ฐ์ผ์ง€ ๋ชฐ๋ผ๋„
์ดˆ๋ณด์ž ๋งž๋‹ค ใ…Žใ…Ž
 
๊ทธ๋ž˜์„œ ๋˜ ํ•œ ๋ฒˆ param์ „์†ก์ด ์•„๋‹Œ, ์ƒํƒœ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์— ๋Œ€ํ•ด ์ฐพ์•˜๋‹ค.
 
1. ์ „์—ญ ์ƒํƒœ : ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์—ญ์—์„œ 
์•ก์„ธ์Šค ํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ „์—ญ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
params๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋„ค๋น„๊ฒŒ์ด์…˜ ์Šคํƒ ๋‚ด์—์„œ ๋‘ ๊ฐœ์˜ ํŠน์ • ํ™”๋ฉด ๊ฐ„์˜ ํ†ต์‹ ์— ์ œํ•œ๋œ๋‹ค.
 
2. ๋ณต์žกํ•œ ์ƒํƒœ : ๋งŽ์€ ๋ฐ์ดํ„ฐ ๋˜๋Š” ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ,
params๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•œ ์ฝ”๋“œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ
์ƒํƒœ ์ „ํ™˜์„ ์œ ์ง€ ๋ฐ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
 
3. ๋ฐ˜์‘์„ฑ : ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ˜์‘์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ณ  
์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•œ๋‹ค. 
Params๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ฐ˜์‘์„ฑ ์ˆ˜์ค€์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ 
params์˜ ๋ณ€๊ฒฝ์— ๋Œ€์‘ํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
 
4. ๊ฒฐํ•ฉ์„ฑ ๋ถ„๋ฆฌ  : ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ์™€ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ 
UI ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ๊นจ๋—ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์œ ๋„ํ•œ๋‹ค.
 
5. ๋ฏธ๋“ค์›จ์–ด ๋ฐ ๊ฐœ์„  ๊ธฐ๋Šฅ: ๋งŽ์€ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š”
๋น„๋™๊ธฐ ์ž‘์—…, ๋กœ๊น…, ๋””๋ฒ„๊น… ๋„๊ตฌ ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋“ค์›จ์–ด์™€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•œ๋‹ค.
 
 
์š”์•ฝํ•˜๋ฉด React Navigation์„ ํ†ตํ•œ params๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 
๋„ค๋น„๊ฒŒ์ด์…˜ ๊ด€๋ จ ๋ฐ์ดํ„ฐ ๋ฐ ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์€ ์ž˜ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ,
 params๋งŒ์œผ๋กœ ๋ณต์žกํ•œ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ํ•„์š”์„ฑ์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๋‹ค.
 
์ด๊ฒƒ ๋˜ํ•œ props์ „์†ก ๋Œ€์‹  ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ์™€ ๋น„์Šทํ•œ ์ด์œ  ์ธ ๋“ฏ ํ•˜๋‹ค.
 
 

์ƒํƒœ๊ด€๋ฆฌ์™€ Param์˜ ์‚ฌ์šฉ์˜ ์ฐจ์ด์— ๋Œ€ํ•œ ๊ฒฐ๋ก  ๋ฐ ์˜ˆ์‹œ

 
์ฆ‰, ์ƒํƒœ๊ด€๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ 
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„ ๊ฐ„์— ๊ณต์œ ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.
์˜ˆ๋ฅผ ๋“ค๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์€ ํ…Œ๋งˆ์™€ ์–ด๋‘์šด ํ…Œ๋งˆ ๊ฐ„์— ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ ค๊ณ  ํ•  ๋•Œ !
 

// ThemeContext.js
import React, { createContext, useState, useContext } from 'react';

const ThemeContext = createContext();

export const useTheme = () => {
  return useContext(ThemeContext);
};

export const ThemeProvider = ({ children }) => {
  const [theme, setTheme] = useState('light');

  const toggleTheme = () => {
    setTheme((currentTheme) => (currentTheme === 'light' ? 'dark' : 'light'));
  };

  return (
    <ThemeContext.Provider value={{ theme, toggleTheme }}>
      {children}
    </ThemeContext.Provider>
  );
};

 
์ด ์˜ˆ์ œ๋Š” React์˜ context api๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์—ญ ํ…Œ๋งˆ ์ปจํ…์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ ,
'ThemeProvider'๋‚ด์—์„œ ํ…Œ๋งˆ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•œ๋‹ค.
์•ฑ ๋‚ด์˜ ์ปดํฌ๋„ŒํŠธ๋Š” useTheme ํ›…์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ๋งˆ ์ƒํƒœ์— ์•ก์„ธ์Šค ํ•˜๊ณ  
์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์ด ์ „ํ˜•์ ์ธ ์ƒํƒœ๊ด€๋ฆฌ์˜ ์˜ˆ์ด๋‹ค.
 
 
๊ทธ๋ฆฌ๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€
์ฃผ๋กœ ๋„ค๋น„๊ฒŒ์ด์…˜๊ณผ ํ™”๋ฉด ๊ฐ„ ํ†ต์‹ ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค.
ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ํ™”๋ฉด์—์„œ ๋‹ค๋ฅธ ํ™”๋ฉด์œผ๋กœ ์ „์†กํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜์‹  ํ™”๋ฉด์„ ๊ตฌ์„ฑ ๋˜๋Š”
์‚ฌ์šฉ์ž ์ •์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์œ ์šฉํ•˜๋‹ค.
์˜ˆ๋ฅผ ๋“ค๋ฉด, ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋กœํ•„ ํ™”๋ฉด์œผ๋กœ ์ „๋‹ฌํ•  ๋•Œ์ด๋‹ค.
 

// ScreenA.js
import React from 'react';
import { Button } from 'react-native';

const ScreenA = ({ navigation }) => {
  const userData = {
    name: 'John Doe',
    email: 'john@example.com',
  };

  return (
    <Button
      title="ํ”„๋กœํ•„ ๋ณด๊ธฐ"
      onPress={() => {
        navigation.navigate('Profile', { user: userData });
      }}
    />
  );
};
// ProfileScreen.js
import React from 'react';
import { Text } from 'react-native';

const ProfileScreen = ({ route }) => {
  const user = route.params.user;

  return (
    <Text>
      ์ด๋ฆ„: {user.name}
      {'\n'}
      ์ด๋ฉ”์ผ: {user.email}
    </Text>
  );
};

 
์ด ์˜ˆ์ œ๋Š” ScreenA์—์„œ ProfileScreen์œผ๋กœ ์ด๋™ํ•  ๋•Œ
userData๊ฐ์ฒด๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•œ๋‹ค.
ProfieScreen์€ route.params๊ฐ์ฒด์—์„œ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•œ๋‹ค.
์ด๊ฒƒ์€ ํŠน์ • ํ™”๋ฉด์˜ ๋™์ž‘ ๋˜๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์˜ˆ์ด๋‹ค.
 


๊ทธ๋Ÿผ ์–ด๋–จ ๋•Œ ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ,
์–ด๋–จ ๋•Œ param์ „์†ก์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ํ™•์‹ ์ด ๋“ค์ง€ ์•Š๋Š”๋‹ค.
๋‹จ์ˆœํ•œ param์ „์†ก์ด ํ•„์š”ํ•  ๋•Œ๋„ ๋ถ„๋ช… ์กด์žฌ ํ•  ํ…๋ฐ..
 
 

ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒฝ์šฐ, ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒฝ์šฐ

 
- ํŒŒ๋ผ๋ฏธํ„ฐ ์ „์†ก ์‚ฌ์šฉ ์‹œ
 
: ๋„ค๋น„๊ฒŒ์ด์…˜ ์ค‘์— ํ™”๋ฉด ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ.

: ์ˆ˜์‹ ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ™”๋ฉด์˜ ๋™์ž‘์„ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ.

: ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ์‹œ์ ์ด๋ฉฐ ๋„ค๋น„๊ฒŒ์ด์…˜ ์ž‘์—…์— ํŠน์ •ํ•œ ๊ฒฝ์šฐ.
 
- ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ฒฝ์šฐ
 
: ์•ฑ์˜ ์ „์—ญ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(์•ฑ์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ ๋™์•ˆ ์ง€์†๋จ).

; ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ์ƒํ˜ธ ์ž‘์šฉ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณต์œ  ์š”๊ตฌ ์‚ฌํ•ญ์ด ๋‹ค์–‘ํ•œ ์•ฑ ๋ถ€๋ถ„์—์„œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ.

: ๋ฐ์ดํ„ฐ๊ฐ€ ์•ฑ ์„ธ์…˜ ๊ฐ„์— ์ง€์†๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(์˜ˆ: ์‚ฌ์šฉ์ž ์ธ์ฆ ์ƒํƒœ, ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ ์„ค์ •, ์บ์‹œ๋œ ๋ฐ์ดํ„ฐ).

: ๋ฐ์ดํ„ฐ ์บ์‹ฑ, ์ง€์—ฐ ๋กœ๋”ฉ ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜๊ณผ ๊ฐ™์€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ.
 
 


๋งŽ์€ ๊ฒฝ์šฐ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์กฐํ•ฉ์ด ํšจ๊ณผ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.
 
์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ 
์–ธ์ œ ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํšจ๊ณผ์ ์ผ์ง€์— ๋Œ€ํ•ด
ํŒ๋‹จ์„ ์ž˜ ํ•ด์•ผ ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.
 
์ƒํƒœ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ฝ”๋“œ์ธ์ง€
๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ ๋„˜๊น€์ด ํ•„์š”ํ•œ ๊ฒƒ์ธ์ง€..
 
์ดํ•ดํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๋ถ€๋ถ„์—์„œ๋„
๊ณ„์†ํ•ด์„œ ๋ชฐ๋ž๋˜ ๋ถ€๋ถ„์ด ์ƒ๊ฒจ๋‚˜๋Š” ๊ฒƒ์„ ๋ณด์•„
๊ธฐ์ดˆ ๋ผˆ๋Œ€์— ๋Œ€ํ•ด 
์ข€ ๋” ํƒ„ํƒ„ํ•˜๊ฒŒ ๋‹ค์งˆ ํ•„์š”์„ฑ์„ ๋А๊ผˆ๋‹ค.