🗓 항해 99 3기에서 9/27 ~ 10/2 동안의 3주차 회고록
월 ~ 화 까지는 기본주차 과제를 마무리하고 제출하고, 수요일에는 자바스크립트랑 리액트 관련해서 공부를 하려고 했지만.. 과제 제출하고나니 끝냈다는 생각에 제대로 못했던 것 같다. 그렇게 기본주차를 마무리하고 목요일부터 새로운 팀원들과 심화주차가 시작되었다.
기본주차도 내용이 많다고 생각했는데 심화주차는 얼마나 많을까 걱정되었는데 정말 많다.
기본주차에서 async await을 쓸 때 제대로 이해하지 못하고, 그냥 응답이 올때까지 기다린다 정도로만 알고 넘어갔어서 따로 자료를 찾아서 봤지만 왜 써야하는지? 잘 느끼지 못했었다. 심화주차 강의를 들으면서 firestore에 데이터를 넘겨주고 그것을 다시 받아오고 하면서 .then .catch 구문을 많이 써보면서 비동기 후속처리를 어떻게 하는지에 대해서 알고 넘어갈 수 있었다.
심화주차 과제는 두 가지중 하나를 선택하는거였고 매운맛과제가 달력만들기인데 첨에 보자마자 재미있어보여서 무조건 강의를 다 듣고 달력을 만들어봐야겠다고 생각했다. 하지만 나의 오만방자한 생각이였다.. 오늘까지 일단 3주차 숙제까지 다들었는데 여기까지 오는 것도 내용이 너무 많아서 힘들었고, 복습도 제대로 하지 못했다. 그래서 내일까지 4주차를 다듣고 쫙 복습하면서 기본맛과제를 제대로 만들어보고 시간이 남으면 달력을 만들 것 같다.
심화과정에서는 그동안 컴포넌트를 만들었던 방식과는 또다르게 컴포넌트를 element단위로 나누어서 defaultProps를 주고, 상위 컴포넌트에서 그 값을 지정해주고 style을 변경해주었는데 이렇게 하면 컴포넌트를 재활용하기에 좋은 것 같다고 생각이 들었다.
그리고 creatorActios, immer 등 새로운 패키지를 써볼 수 있었다. 특히 immer는 처음 알게 되었는데 리듀서에서 state를 변경해줄때 불변성을 신경쓰지 않아도 되서 너무 편리했다.
내일은 4주차까지 다 듣고, 시간이 되면 2주차내용부터 복습을 하는 것이 목표이다. 그리고 화요일부터 제대로 복습을 하면서 과제를 만들어봐야겠다.
React Lifecycle Methods diagram
constructor
getDerivedStateFromProps
render
componentDidMount
shouldComponentUpdate
getSanpshotBeforeUpdate
componentDidUpdate
import React, { useState } from 'react';
function Counter() {
const [count, setCount] = useState(0); // 초깃값
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}> // setCount 함수 호출
Click me
</button>
</div>
);
}
const [count, setcount] = useState() 라고 쓰는 이유이다.배열 구조 분해 문법 const arr = [1,2,3];
// ES6 배열 구조분해 할당
// 변수 one, two, three를 선언하고 배열 arr을 디스트럭처링하여 할당한다.
// 이때 할당 기준은 배열의 인덱스
const [one, two, three] = arr;
console.log(one, two, three); // 1 2 3
componentDidMount 와 componentDidUpdate 를 합친 형태로도 볼 수 있다. useEffect(() => {
console.log('마운트 될 때만 실행됩니다.');
}, []);
특정 값이 업데이트될 때만 실행하고 싶을 때
함수의 두번째 파라미터인 배열 안에 상태를 변경하고 싶은 값을 넣어준다.
특정 값을 넣게 된다면, 컴포넌트가 처음 마운트 될 때에도 호출이되고, 지정한 값이 바뀔 때에도 호출이 된다. 그리고, 언마운트시에도 , 값이 바뀌기 직전에도 호출이된다.
화면이 사라질 때
useEffect에서는 함수를 반환할 수 있는데 이를 clean up 함수라고 부른다.
의존성 배열을 비우게된다면 컴포넌트가 사라질 때 호출된다.