● 오늘 공부한 것
- 재귀
07_arrLength
function arrLength(arr) {
// TODO: 여기에 코드를 작성합니다.
if (arr.isEmpty()) return 0;
arr.shift();
return 1 + arrLength(arr)
}
08_drop
if (num === 0 || arr.length === 0) return arr;
else if (num > arr.length ) return [];
arr.shift();
return drop(num-1, arr)
09_take
function take(num, arr) {
// TODO: 여기에 코드를 작성합니다.
if (num === 0 || arr.length === 0) return [];
const head = arr[0];
const tail = arr.slice(1);
return [head].concat(take(num-1, tail))
}
13_findMatryoshka
function findMatryoshka(matryoshka, size) {
// TODO: 여기에 코드를 작성합니다.
if (matryoshka.size === size) return true;
else if (matryoshka.matryoshka){
const result = findMatryoshka(matryoshka.matryoshka, size);
if(result) return true
}
return false
}
14_unpackGiftbox
function unpackGiftbox(giftBox, wish) {
for (let i = 0; i < giftBox.length; i++){
if (giftBox[i] === wish) return true;
else if(Array.isArray(giftBox[i]) === true){
const result = unpackGiftbox(giftBox[i], wish);
if (result) return true;
}
}
return false
}
15_flattenArr
function flattenArr(arr) {
// TODO: 여기에 코드를 작성합니다.
if (arr.length === 0) return [];
const answer = [];
for (let el of arr){
if (Array.isArray(el)) answer.push(...flattenArr(el));
else answer.push(el)
}
return answer
}
● 내가 놓치고 있던 것
- onClick={} 설정해놓으면 이벤트 버블링이 생긴다,
- onClickCapture={} 로 넣으면 이벤트 캡쳐링 설정할 수 있음.
- 자바스크립상 캡쳐링을 막을 순 없다.
- 이벤트 버블링은 e.stopPropagation() 으로 막을 수 있음.
● 수업이외의 공부
- immer 공부하기
- usememo 블로그 읽기
memo()를 하기 전에
자연스럽게 이끌어내는 렌더링 최적화
overreacted.io
- useCallback 도 같이.. 공부를 해보긴 했읍니다 ^^;;