Notice
Recent Posts
Recent Comments
Link
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Lennon FE

[React] ์˜ต์…”๋„ ์ฒด์ด๋‹ ๋ณธ๋ฌธ

๐Ÿง‘‍๐Ÿ’ป Web/React

[React] ์˜ต์…”๋„ ์ฒด์ด๋‹

Lennon 2022. 7. 21. 22:20
728x90
๋ฐ˜์‘ํ˜•

๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค๋ณด๋ฉด ์„œ๋ฒ„ํ†ต์‹  ๋ฐ ์ปดํฌ๋„ŒํŠธ ๋ผ์ดํ”„ ์‚ฌ์ดํด ์ฐจ์ด์— ๋”ฐ๋ผ null, undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ด ๊ฐ€๋” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณค ํ•œ๋‹ค.

์ด๋Š” ๊ทธ๋ž˜๋„ ์นœ์ ˆํ•˜๊ฒŒ ์˜ค๋ฅ˜ ์ฝ”๋“œ๋กœ ์•Œ๋ ค์ฃผ๊ธฐ์— ํ•ด๊ฒฐํ•˜๊ธด ์‰ฌ์šธ ์ˆ˜ ์žˆ์ง€๋งŒ,

์กด์žฌ ๋˜๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์š”์†Œ์™€ ๋ฉ”์„œ๋“œ๋“ค์— ๋Œ€ํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๋” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์•„๋ž˜ ์ฝ”๋“œ์—์„œ span์•ˆ์˜ text๊ฐ’์ด ๋ช‡์ด ๋‚˜์˜ฌ์ง€ ์˜ˆ์ƒํ•ด๋ณด์ž.

import React from 'react'

const getNonEmptyCategories = (catrgories) => (
    categories.filter((category) => category.items > 0);
)

// categories = [ {items: 5, id: 0}, {items: 4, id: 0} ]
// index = 1
const App = ({ categories, index }) => {
    const filterCategory = getNonEmptyCategories(categories);
    
    const filterCategoryValue = filterCategory[index].items;
    
    return (
        <span>{filterCategoryValue}</span>
    )
}

export default App;

์œ„ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ๋‹น์—ฐํžˆ 4๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์ €๋Ÿฐ ๋‹น์—ฐํ•œ ๊ฒƒ๋“ค์ด ๊ฐ€๋”์”ฉ ์ปดํฌ๋„ŒํŠธ ๋ผ์ดํ”„ ์‚ฌ์ดํด์— ๋”ฐ๋ผ  filterCategory[index]๊ฐ€ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ด
items๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๋‚ด์šฉ์˜ 500์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

 

์ด๋ฏธ ์„œ๋ฒ„๋‚˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ์˜ค๋Š” ๋‚ด์šฉ๋“ค์ธ๋ฐ ๋‹จ์ง€ ์‚ฌ์ดํด ์ฐจ์ด๋กœ ์ €๋Ÿฐ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

๊ทธ๋Ÿด ๋•Œ ์‚ฌ์šฉ์ž๋“ค์ด ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋‹ค.

์˜ต์…”๋„ ์ฒด์ด๋‹ ์ „์—” ์‚ฌ์šฉ์ž๋“ค์€ ๋‹จ์ถ•ํ‰๊ฐ€, 3ํ•ญ ์—ฐ์‚ฐ์ž ํ†ตํ•ด ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ๋งŽ์ด ํ–ˆ๋‹ค.

import React from 'react'

const getNonEmptyCategories = (catrgories) => (
    categories.filter((category) => category.items > 0);
)

// categories = [ {items: 5, id: 0}, {items: 4, id: 0} ]
// index = 1
const App = ({ categories, index }) => {
    const filterCategory = getNonEmptyCategories(categories);
    
    //
    let filterCategoryValue = [];
    
    filterCategory[index] &&
    	filterCategoryValue = filterCategory[index].items
    
    // or
    
    const filterCategoryValue = filterCategory[index].items || [];
    
    // or
    
    const filterCategoryValue = filterCategory[index] ? filterCategory[index].items : [];
    
    
    return (
        <span>{filterCategoryValue}</span>
    )
}

export default App;

๋‹น์—ฐํžˆ ์œ„ ๋ฌธ๋ฒ•๋„ ํฌ๊ฒŒ ๋ฌธ์ œ๋Š” ์—†์ง€๋งŒ ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์˜ต์…”๋„ ์ฒด์ด๋‹์„ ๊ฐœ๋ฐœํ•ด์คฌ๋‹ค.

 

์˜ต์…”๋„ ์ฒด์ด๋‹

์œ„์—์„œ ์„ค๋ช…ํ–ˆ์ง€๋งŒ, ์กด์žฌ ๋˜๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์š”์†Œ์™€ ๋ฉ”์„œ๋“œ๋“ค์— ๋Œ€ํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ๋” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๊ทธ๋ƒฅ ์•ž์— ?๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฉด ๊ฐ’์ด ๋ˆ„๋ฝ๋  ๊ฒฝ์šฐ์— ์˜ต์…”๋„ ์ฒด์ด๋‹์„ ๋ถ™์—ฌ์ฃผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

import React from 'react'

const getNonEmptyCategories = (catrgories) => (
    categories.filter((category) => category.items > 0);
)

// categories = [ {items: 5, id: 0}, {items: 4, id: 0} ]
// index = 1
const App = ({ categories, index }) => {
    const filterCategory = getNonEmptyCategories(categories);
    
    const filterCategoryValue = filterCategory[index]?.items // ์š”๊ธฐ

    return (
        <span>{filterCategoryValue}</span>
    )
}

export default App;

์ด๋Ÿฌ๋ฉด ํ•ด๊ฒฐ์ด ๋œ๋‹ค.

์˜ต์…”๋„ ์ฒด์ด๋‹์€ ์—ฌ๊ธฐ๊นŒ์ง€ ๋ณด๋ฉด ์žฅ์ ๋งŒ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋‹จ์ ๋„ ์กด์žฌํ•œ๋‹ค.

์ถ”ํ›„์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ธฐ ์–ด๋ ต๊ธฐ๋„ ํ•˜๊ณ , ์—๋Ÿฌ ๋””๋ฒ„๊น… ๋“ฑ ์ถ”ํ›„ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์ข‹์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‚จ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

 

์“ฐ๊ธฐ๋ณด๋‹จ ์ฝ๊ธฐ(๋ฐฐ์—ด, ํ•จ์ˆ˜, ๋ณ€์ˆ˜ ๋“ฑ๋“ฑ)์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ๋„ ์•Œ์•„๋‘์ž!

728x90
๋ฐ˜์‘ํ˜•
Comments