Web/React

.map, _lodash

__bo0o_ 2021. 7. 6. 09:24

1. map이란

Javascript 배열 객체 내장 함수인 map을 사용하여 반복되는 컴포넌트를 렌더링할 수 있습니다.
map 함수는 파라미터로 전달된 함수를 사용하여
배열 내 각 요소를 원하는 규칙에 따라 변환한 후 그 결과로 새로운 배열을 생성합니다.

2. map 사용법

var numbers = [1, 2, 3, 4, 5]; 
var processed = numbers.map(function(num) { 
	return num * num; 
});


1) 실제로 적용

const Example = () => { 
	const imgSrc = ["images/example.png", "images/example2.png"];
    const imgAlt = ["example.png", "example2.png"];
    return ( 
    	<Swiper slidesPerView={2} spaceBetween={24}> 
        	{imgSrc.map((src, idx) => (
            	<SwiperSlide key={idx}>
                	<img src={src} alt={imgAlt[idx] />
                </SwiperSlide>
            ))} 
        </Swiper>
    ); 
 }

이런식으로 이미지 개수만큼 반복하여 페이지에 출력해주도록 할 수 있습니다.

3. 기타

- lodash, map 함께 사용

https://record22.tistory.com/107 참고

translation.ko.json {
    "help": {
        "question": ["Q. 1", "Q. 2", "Q. 3", "Q. 4", "Q. 5", "Q. 6"],
        "answer": ["A1", "A2", "A3", "A4", "A5", "A6"]
    },
    ...
}


예를 들어 위와 같이 특정 json 객체의 개수만큼,
help의 question 배열의 개수만큼 map을 사용하여 반복시켜야한다면
lodash를 사용하여 아래와 같이 사용해주시면 됩니다.

...

import _ from "lodash";

...

{
    _.map(t("content.company.main1", {returnObjects: true}), (item, idx) => {
        const id = "qna" + idx;
        return (<div className="panel">
            <div className="panel-heading"
                id={id}
                onClick={
                    () => panelOpen(id)
            }>
                <h4 className="panel-title"> {item}</h4>
            </div>
            <div className="panel-wrap"
                id={id}>
                <div className="panel-body"
                    dangerouslySetInnerHTML={
                        {
                            __html: sanitizer(t("content.help.answer." + idx))
                        }
                }></div>
            </div>
            // if Img is ... //
            <img src={
                    sanitizer(t("content.company.main2 ..." + idx + ".0"))
                }
                alt={
                    sanitizer(t("content.company.main2 ..." + idx + ".1"))
                }/>
        </div>);
    })
}

 

'Web > React' 카테고리의 다른 글

scss 설치 및 사용법  (0) 2021.11.23
.prettierrc  (0) 2021.11.23
React i18next 다국어 처리  (0) 2021.06.20
React npm start, package.json  (0) 2021.06.06
React dangerouslySetInnerHTML, DOMPurify  (0) 2021.06.06