1주차 과제를 제출하고 깃헙을 통해서 리더분들의 리뷰뿐만 아니라 동기분들의 리뷰를 통해서 많은 것을 배울 수 있었다.
과제를 진행하면서 가장 의문이 많이 남았던 부분은 함수에 관련된 것이었다.
위와 같이 어떻게 하면 좋은 함수를 만들 수 있을지에 대한 고민을 많이 했었다.
Server Side Rendering
Client side 영역에서의 템플릿 사용과 Server side 영역에서의 템플릿 사용이 혼용되며 문제점 발생
Client Side Rendering
TodoList
생성자함수 구현this.state
: 인스턴스 객체의 상태 관리this.setState
: 인스턴스 객체의 상태를 업데이트하는 함수this.render
: 인스턴스 객체의 상태에 따라 UI를 그리는 함수new.target
: new 키워드를 사용해 함수를 호출했는지 확인Array.isArray(데이터)
: 데이터가 배열인지 확인<h1>
, 작은 글자 <h3>
와 같이 사용하지 말자.todo
데이터 입력 받기todos
상태에 따라 렌더링 변경li
요소에 포함된 토글, 삭제 버튼에 대한 클릭 이벤트 위임// CustomEvent 생성
const catFound = new CustomEvent('animalfound', {
detail: {
name: 'cat'
}
});
const dogFound = new CustomEvent('animalfound', {
detail: {
name: 'dog'
}
});
// 적합한 이벤트 수신기 부착
obj.addEventListener('animalfound', (e) => console.log(e.detail.name));
// 이벤트 발송
obj.dispatchEvent(catFound);
obj.dispatchEvent(dogFound);
// 콘솔에 "cat"과 "dog"가 기록됨
// localStorage에서 데이터 가져오기
localStorage.getItem(key);
// localStorage에 데이터 저장하기
localStorage.setItem(key, value);
이번 과제를 통해서 자바스크립트로 컴포넌트를 만들어 보면서 리액트를 사용해 컴포넌트를 구현하는 것보다 어렵다는 느낌을 받았고,
리액트에서는 JSX와 같은 사용자 편의성이 높은 문법들이 제공되어 돔과 관련된 귀찮은 작업들, 상태를 관리하고 상태를 업데이트하고 리렌더링 하는 일들이 리액트 단에서 해결해주기 때문에 리액트가 얼마나 편리한 도구인지 깨닫게 되었던 시간이었다.