Map() 함수
자바스크립트 배열 객체의 내장 함수인 map 함수를 사용하여 반복되는 컴포넌트를 렌더링할 수 있습니다.
map함수는 파라미터로 전달된 함수를 사용해서 배열 내 각 요소를 원하는 규칙에 따라 변환한 후, 그 결과로 새로운 배열을 생성합니다.
arr.map(callback, [thisArg])
-
callback: 새로운 배열의 요소를 생성하는 함수로 파라미터 3가지 입니다.
- currentValue: 현재 처리하고 있는 요소
- index: 현재 처리하고 있는 요소의 index 값
- array: 현재 처리하고 있는 원본 배열
-
thisArg(선택사항): callback함수 내부에서 사용할 this 레퍼런스
map 함수: 기존 배열로 새로운 배열을 만드는 역할
let number = [1, 2, 3, 4, 5];
let processed = number.map(function(num) {
return num * num
})
console.log(processed); // 1, 4, 9, 16, 25
// ES6
const number = [1, 2, 3, 4, 5]
const result = number.map(num => num * num)
console.log(result); // 1, 4, 9, 16, 25
데이터 배열을 컴포넌트 배열로 변환하기
const IterationSample = () => {
const names = ['HTML5', 'CSS3', 'ES6', 'JavaScript']
const nameList = names.map(name => <li>{name}</li>)
return <ul>{nameList}</ul>
}
문자열로 구성된 배열을 선언합니다.
고유한 key값을 가져와야된다고 error가 발생합니다.
key
컴포넌트 배열을 렌더링했을 때 어떤 원소에 변동이 있었는지,
유동적인 데이터를 다룰 때는 원소를 새로 생성할 수도, 제거할 수도, 수정할 수도 있습니다.
key가 없을 때, virtual DOM을 비교하는 과정에서 리스트를 순차적으로 비교하면서 변화를 감지합니다.
key가 있다면 이 값을 사용하여 어떤 변화가 일어났는지 더욱 빠르게 알아낼 수 있습니다.
key가 있을 때, 이 값을 사용하여 어떤 변화가 일어났는지 더욱 빠르게 알아낼 수 있습니다.
key 설정
const IterationSample = () => {
<article
title={article.title}
writer={article.writer}
key={article.id}
/>
}
const IterationSample = () => {
const names = ['눈사람', '얼음', '눈', '바람']
const nameList = names.map((name, index) => <li key={index}>{name}</li>)
return <ul>{nameList}</ul>
}
고유한 값이 없을 때만 index값을 key로 사용합니다. 배열이 변경될 때 효율적으로 렌더링하지 못합니다.
배열에 새 항목을 추가할 때 배열의 push함수를 사용하지 않고, concat을 사용했습니다.
! push와 concat의 차이점
push 함수는 기존 배열 자체를 변경해줍니다.
concat은 새로운 배열을 만들어 줍니다.
데이터 제거 기능 구현하기
항목을 더블 클릭 했을 때 해당 항목이 화면에서 사라지는 기능 구현합니다.
불변성을 유지하면서 배열의 특정 항목을 지울 때는 배열의 내장 함수 filter를 사용합니다.
filter 함수
const numbers = [1, 2, 3, 4, 5]
const result = numbers.filter(number => number > 3);
console.log(result); // [4, 5]
filter함수의 인자에 분류하고 싶은 조건을 반환하는 함수를 넣어 주면 쉽게 분류할 수 있습니다.
filter함수를 응용하여 특정 배열에서 특정 원소만 제외시킬 수 있습니다.
const numbers = [1, 2, 3, 4, 5]
const result = numbers.filter(number => number !== 3);
console.log(result); // [1, 2, 4, 5] // 3이 빠졌습니다.
onDoubleClick: HTML요소를 더블클릭할 때 사용하는 이벤트
'Front-End' 카테고리의 다른 글
[React] 학습내용 STEP.1 (0) | 2020.05.18 |
---|---|
[React] 컴포넌트의 라이프사이클 (수명주기) (0) | 2020.05.14 |
[React] Component (0) | 2020.05.13 |
[React] 리액트란 (0) | 2020.05.12 |
[Vanilla JS] Animation Mouse cursor (Covid-19) (0) | 2020.05.08 |