SUIN

[TIL] 21.11.24 공부의 끝은 어디인가... 본문

TIL

[TIL] 21.11.24 공부의 끝은 어디인가...

choi suin 2021. 11. 24. 23:33
728x90

 

개인과제 완성하기를 목표로 파이어 베이스 강의를 들으며 데이터를 직접 CRUD 해보는  시간을 가졌다 

월요일 파이어 베이스 강의를 완강했지만 아직 이해하지 못한 부분이 많아 다시 처음부터 차근히 따라가며 직접 내가 작성한 코드와 비교하며 만들어보는 연습을 했고 모르는 부분은 다시 돌아가며 무한반복을 해서 코드를 이해하려고 노력했다 

 Redux의  덕스(ducks) 구조로 만든 데이터를 추가하고 수정할 수 있지만 새로고침 시 데이터가 실제로 삭제가 되지 않는다 

그래서 Firebase와 비동기 통신을 할때 필요한 미들웨어 thunk 를 사용하여 액션 생성 함수를 만들어 CRUD 한 데이터를 직접 데이터베이스에 넣어보는 공부를 했다 

 

비동기 통신이란 

  • 서버에서 데이터를 가지고 오는 것은 우리가 바로 알 수없고 요청이 들어가면 응답을 해줄 때까지 작업이 끝났는지 알 수 없다 
  • 즉 우리가 파이어스토어에서 데이터를 가지고 오는 것은 비동기로 데이터를 가지고 오는 것이다

 

추가적으로 팀과제의 옵셔널 체이닝에 대해서 공부하는 시간을 가졌다 


Q2. 옵셔널 체이닝이란 뭘까요? 어떤 경우에 사용할까요?

 

옵셔널 체이닝(optional chaining)?. 을 사용하면 프로퍼티가 없는 중첩 객체를 에러 없이 안전하게 접근할 수 있고

?. 은 ?. '앞’의 평가 대상이 undefined나 null이면 평가를 멈추고 undefined를 반환한다

예시 

let user = {}; // 주소 정보가 없는 사용자
let user2 = null;

alert(user.address.street); // TypeError 발생

alert( user?.address?.street ); // undefined, 에러가 발생하지 않습니다.


alert( user2?.address.street ); // undefined

 

주의사항 

  • ?. 는 존재하지 않아도 괜찮은 대상에만 사용해야 합니다.
  • ?. 앞의 변수는 꼭 선언되어 있어야 합니다.
  • ?. 은 읽기나 삭제하기에는 사용할 수 있지만 쓰기에는 사용할 수 없습니다.

 


리덕스와 파이어 베이스의 dispatch 사용방법이 아직 조금 힘들지만 내일 추가적으로 update를 만들어보면서 많이 익혀봐야겠다 

 

팀과제를 하면서 느낀 것... 모르는 내용이 있다면? 에러가 나도 이해하지 못한다면? 역시 구글링 짱... 👍🏻