-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[10팀 이정은] [Chapter 1-2] 프레임워크 없이 SPA 만들기 - 작성중 #56
base: main
Are you sure you want to change the base?
Conversation
if (vNode.props) { | ||
Object.entries(vNode.props).forEach(([key, value]) => { | ||
if (key === "className") { | ||
$el.setAttribute("class", value); | ||
} else if (key.startsWith("on")) { | ||
addEvent($el, key.toLowerCase().slice(2), value); | ||
} else { | ||
$el.setAttribute(key, value); | ||
} | ||
}); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updateAttributes 함수에 넣어서 속성 처리를 해줄 수 있을 것 같습니다!
(사실.. 저도 템플릿에 있길래 함수에 넣어서 구현한거라 좋은지, 안좋은지 잘은 모르겠지만..)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
예상되는 리스너들을 미리 등록해놓고 구현하신 부분이 이런 방법도 있구나 알게되었습니다!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
코드 너무 잘봤습니다!
열심히 잘 하고 계셔서 필요하신 부분을 공부하시면서 나아가시면 좋은 결과가 있을 것이라고 생각이 들어요!
제가 적어둔 부분들도 집중하다보니 놓치신 부분들인 것 같아요.
2주차도 고생 많으셨고 다음주차도 화이팅입니다!
child !== false && | ||
child !== true, // 이것 까지 추가하면 Falsy값이 아니지 않나? boolean을 따로 처리해줘야하나? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이부분은 null을 제외한 나머지를 typeof로 변환하시면 조금 더 깔끔하게 작성하실 수 있을거에요
root.addEventListener("click", eventHandler); | ||
root.addEventListener("input", eventHandler); | ||
root.addEventListener("change", eventHandler); | ||
root.addEventListener("focus", eventHandler); | ||
root.addEventListener("blur", eventHandler); | ||
root.addEventListener("keydown", eventHandler); | ||
root.addEventListener("keyup", eventHandler); | ||
root.addEventListener("keypress", eventHandler); | ||
root.addEventListener("mouseover", eventHandler); | ||
root.addEventListener("mouseout", eventHandler); | ||
root.addEventListener("mousemove", eventHandler); | ||
root.addEventListener("mouseup", eventHandler); | ||
root.addEventListener("mousedown", eventHandler); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
eventType을 가져와서 활용하시는 것도 좋았을 것 같아요! 아마 WeakMap을 활용하시려고 이 방법을 택하신거겠죠? WeakMap은 색인이 어려워서 루프 도는게 안되서 이 방법말고는 저도 따로 생각나는게 없더라구요. 그래서 Map으로 변경했습니다 ㅎㅎ..
oldElement.setAttribute(name.toLowerCase(), ""); | ||
} else { | ||
oldElement.setAttribute(name, value); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
className => class로 변경하는 부분이 빠진 것 같아요!
과제 체크포인트
기본과제
가상돔을 기반으로 렌더링하기
이벤트 위임
심화 과제
1) Diff 알고리즘 구현
2) 포스트 추가/좋아요 기능 구현
과제 셀프회고
기술적 성장
코드 품질
학습 효과 분석
과제 피드백
리뷰 받고 싶은 내용