ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์— boolean(์ฐธ/๊ฑฐ์ง“) props ๋ณ€์ˆ˜ ์ „๋‹ฌ

2021. 11. 27. 20:10ใ†๐Ÿ’™ React

React์—์„œ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ props ์ „๋‹ฌ ์‹œ, ํŠน์ • ์š”์†Œ์—๋งŒ ์ „๋‹ฌํ•˜๊ธฐ ์›ํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

์•„๋ž˜ ์˜ˆ์‹œ๋กœ ๊ฐ€๋กœ์ค„์„ ๊ตฌ์„ฑํ•˜๋Š” Row ์ปดํฌ๋„ŒํŠธ์˜ ์ฒซ๋ฒˆ์งธ ์ค„์—๋งŒ isLargeRow ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด ๋‹ค๋ฅธ ์š”์†Œ๋ณด๋‹ค ํฌ๊ฒŒ ํ™”๋ฉด์— ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

 

ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ isLargeRow ๋ณ€์ˆ˜์˜ default๊ฐ’์„ false๋กœ ์ง€์ •ํ•œ ๋‹ค์Œ ์›ํ•˜๋Š” ํŠน์ • ์ปดํฌ๋„ŒํŠธ ์š”์†Œ์—๋งŒ isLargeRow ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๋ฉด๋œ๋‹ค.

 

ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ

function Row({ data, isLargeRow = false }) {
	return(
    	<p className={`view ${isLargeRow && 'viewLarge'}`}> {data.name} </p>
    );
}
export default Row;

์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ data์™€ isLargeRow์ด๋ผ๋Š” boolean๊ฐ’์„ ์ „๋‹ฌ๋ฐ›๋Š” Row ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

isLargeRow ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค๋ฅธ Row๋ณด๋‹ค ํฌ๊ฒŒ ๋ณด์ด๋„๋ก ํ• ์ง€ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜์ด๋‹ค.

 

์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ

App ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ,

export default function App() {
    const data = [...];
    return (
        <div>
            <Row data={data} isLargeRow />
            <Row data={data} />
            <Row data={data} />
        </div>
        )
    )
}

์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์ธ App์€ Row์— ๊ณตํ†ต์ ์œผ๋กœ data๋ฅผ ์ „๋‹ฌํ•˜์ง€๋งŒ, ์ฒซ๋ฒˆ์งธ Row ์š”์†Œ์—๋งŒ isLargeRow ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด ๋‹ค๋ฅธ ์š”์†Œ๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Result

<Row data={data} isLargeRow /> // true

<Row data={data}/> // false

์ด ๊ฒฝ์šฐ isLargeRow๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์€ ์ปดํฌ๋„ŒํŠธ ์ธก์—๋Š” ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ false์˜ default๊ฐ’์„ ๊ฐ€์ง€๋„๋ก ์ž‘์„ฑํ•ด๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์—,  isLargeRow๋ฅผ ์ „๋‹ฌํ•œ ์ปดํฌ๋„ŒํŠธ๋งŒ ์ฐธ์˜ ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก ์ „๋‹ฌ์ด ๋œ๋‹ค.

 

์ด๋Š” boolean ๊ฐ’์ด ์•„๋‹ˆ๋”๋ผ๋„ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋“  ์œ„์™€ ๊ฐ™์€ ์„ ํƒ์  ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ,

๋ณ€์ˆ˜์ด๋ฆ„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘์„ฑํ•ด์ค€๋‹ค๋ฉด ์ฝ”๋“œ์—์„œ๋„ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์™€์˜ ์ฐจ์ด์ ์„ ํ™•์ธํ•˜๊ธฐ ์ข‹๋‹ค.

 

Posted by Ang