React ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋…๋ฆฝ์ ์ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜์™€ ๊ฐ™์ด React ์™ธ๋ถ€์—์„œ ์ด ๋ฌธ๋ฒ•์„ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทœ์น™ ์„ธ๋ถ€ ์‚ฌํ•ญ

React ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ •์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. eval ๋ฐ with์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์€ ์ปดํŒŒ์ผ ํƒ€์ž„์— ์ฝ”๋“œ๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ •์ ์œผ๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ์˜ˆ์‹œ

์ด ๊ทœ์น™์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ์ฝ”๋“œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

// โŒ ์ปดํฌ๋„ŒํŠธ์—์„œ eval ์‚ฌ์šฉ
function Component({ code }) {
const result = eval(code); // ๋ถ„์„ํ•  ์ˆ˜ ์—†์Œ
return <div>{result}</div>;
}

// โŒ with ๋ฌธ ์‚ฌ์šฉ
function Component() {
with (Math) { // ๋™์ ์œผ๋กœ ์Šค์ฝ”ํ”„ ๋ณ€๊ฒฝ
return <div>{sin(PI / 2)}</div>;
}
}

// โŒ eval์„ ์‚ฌ์šฉํ•œ ๋™์  ํ”„๋กœํผํ‹ฐ ์•ก์„ธ์Šค
function Component({propName}) {
const value = eval(`props.${propName}`);
return <div>{value}</div>;
}

์˜ฌ๋ฐ”๋ฅธ ์˜ˆ์‹œ

์ด ๊ทœ์น™์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ์ฝ”๋“œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

// โœ… ์ผ๋ฐ˜์ ์ธ ํ”„๋กœํผํ‹ฐ ์•ก์„ธ์Šค ์‚ฌ์šฉ
function Component({propName, props}) {
const value = props[propName]; // ๋ถ„์„ ๊ฐ€๋Šฅ
return <div>{value}</div>;
}

// โœ… ํ‘œ์ค€ Math ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ
function Component() {
return <div>{Math.sin(Math.PI / 2)}</div>;
}

๋ฌธ์ œ ํ•ด๊ฒฐ

๋™์  ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// โŒ ์ž˜๋ชป๋œ ์˜ˆ์‹œ: ์ปดํฌ๋„ŒํŠธ์—์„œ eval
function Calculator({expression}) {
const result = eval(expression); // ์•ˆ์ „ํ•˜์ง€ ์•Š๊ณ  ์ตœ์ ํ™” ๋ถˆ๊ฐ€๋Šฅ
return <div>๊ฒฐ๊ณผ: {result}</div>;
}

๋Œ€์‹  ์•ˆ์ „ํ•œ ํ‘œํ˜„์‹ ํŒŒ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

// โœ… ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•: ์•ˆ์ „ํ•œ ํŒŒ์„œ ์‚ฌ์šฉ
import {evaluate} from 'mathjs'; // ๋˜๋Š” ์œ ์‚ฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

function Calculator({expression}) {
const [result, setResult] = useState(null);

const calculate = () => {
try {
// ์•ˆ์ „ํ•œ ์ˆ˜ํ•™์  ํ‘œํ˜„์‹ ํ‰๊ฐ€
setResult(evaluate(expression));
} catch (error) {
setResult('์ž˜๋ชป๋œ ํ‘œํ˜„์‹');
}
};

return (
<div>
<button onClick={calculate}>๊ณ„์‚ฐ</button>
{result && <div>๊ฒฐ๊ณผ: {result}</div>}
</div>
);
}

์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค!

์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ณผ ํ•จ๊ป˜ eval์„ ์ ˆ๋Œ€ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”. ๋ณด์•ˆ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜ํ•™์  ํ‘œํ˜„์‹, JSON ํŒŒ์‹ฑ ๋˜๋Š” ํ…œํ”Œ๋ฆฟ ํ‰๊ฐ€์™€ ๊ฐ™์€ ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์—๋Š” ์ „์šฉ ํŒŒ์‹ฑ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.