리액트에서 컴포넌트는 JSX를 리턴하는 함수이다. function Component(props) { // jsx를 계산하는 과정 return JSX; } render 란 간단히 말해서 `브라우저에 UI를 페인트하는 것`이다. Q. 그렇다면 리액트에서 render는 무엇일까? 컴포넌트를 호출하는 것 JSX를 리턴하는 것 JSX를 브라우저에 페인트하는 것이다. Q. 리액트에서 re-render는 무엇일까? 컴포넌트 렌더링처럼 컴포넌트를 호출(call)하는 것 => 다시 함수 호출 JSX를 리턴하는 것 이전 JSX와 현재 JSX를 비교해서 다른 점(difference)을 페인트하는 것 Q. re-render 발생 시점 state가 변했을 때 => state가 setState()로 값이 변경되면 이후에 컴포넌트..
[ 클로저란(Closure)? ] 클로저는 JS라는 언어에 제약된 개념이 아니라 `함수를 일급객체로 사용하는 모든 언어`에서 사용하는 특성이다. 클로저는 언어 자체만 보면 "폐쇄"의 의미를 가지고 있으며 접근할 수 있는 변수의 범위와 대상을 제한하는 느낌에서 closure이라고 하는 것이 아닌가 싶다. A closure is the combination of a function and environment within which that function was declared. -MDN 클로저- 쉽게 표현하자면, 클로저는 `자신이 생성될 때의 환경(lexical environment)을 기억하고, 그를 사용하는 함수` 이다. // 클로저 예시 function makeAddNumFunc(num) { con..
[ Class 사용 시, extends를 남발하지 말자 ] 상속(extends 키워드)를 사용하면 코드의 중복을 줄일 수 있다는 장점이 있다. 하지만 장점만 존재하는 것이 아니다. 상속을 사용하면 코드가 "강 결합" 형태가 된다. 이렇게 되면 부모 클래스가 변경됐을 때, 다른 코드들에 모든 영향이 가게 된다. => 유지보수가 힘들어진다! 그렇기 때문에 코드의 결합은 신중하고 최대한 느슨하게 하는 것이 좋다. (꼭 상속을 한다면 1단계, 2단계 정도만) 그렇다면 대안은? 상속 대신, 의존성을 주입해주는 형태로 쓰면 된다. => 인자로 받는다는 소리 [ Class 내부에서만 사용하는 상수는 Class 안으로 넣어주기 ] 좋은 코드의 큰 기준점 2가지: 결합도와 응집도 (낮은 결합도와 높은 응집도) 함수(fu..
1. set ( functions Setter, 설정자 ) set 구문은 객체의 속성에 할당을 시도할 때 호출할 함수를 바인딩한다. const language = { set current(name) { this.log.push(name); }, log: [] }; language.current = 'EN'; language.current = 'FA'; console.log(language.log); // Expected output: Array ["EN", "FA"] 1-1. 문법 (syntax) {set prop(val) { . . . }} {set [expression](val) { . . . }} `props` : 주어진 함수를 바인딩할 속성 이름 `val` : props에 할당을 시도한 값 `ex..
Class란? class는 객체를 생성하기 위한 템플릿 클래스는 데이터와 이를 조작하는 코드를 하나로 추상화한다. 자바스크립트에서 클래스는 프로토타입을 이용해서 만들어졌지만 ES5의 클래스 의미와는 다른문법과 의미를 가진다. 1. Class 정의 Class는 "특별한 함수"이다. 함수를 표현식과 선언문으로 정의할 수 있듯 클래스 문법도 class 표현식과 class 선언 두 가지 방법을 제공한다. 클래스는 재정의될 수 없다. 재정의를 시도하면 SyntaxError가 발생한다. 1-1. Class 선언 Class 를 정의하는 한 가지 방법은 class 선언을 이용하는 것 class를 선언하기 위해서는 클리스의 이름과 함께 class 키워드를 사용한다. class Rectangle { constructor(..
[진행 기간]: 23.07.03(월) ~ 07(금) [교육 내용] 자소서를 작성하는 방법에 대해서 알려주는 세션(개발자로서의 장점) 과제 피드백을 통한 개선 방향 제시(클린코드,비동기 코드 에러 핸들링, 함수 단일 책임 원칙, 좋은 주석, 불필요한 state 제거) React 렌더링 최적화 & 메모이제이션을 해야하는 상황 [느낀 점] 관심사 분리? 제어의 역전? 잘 와닿지 않는 개념을 쉽게 풀어 설명해준다. 물론 코드에 알려준 개념들을 자연스럽게 녹여서 적용하기는 아직은 어렵지만 생각하지 못한 방법에 대해서 알게되어 좋은 경험이라고 생각한다. 함수형 컴포넌트 위주로 작성하다보니 획일적인 방법만을 사용하려는 경향이 생겼었는데 ES6 class 문법을 통해서(물론 bind()를 써줘야 하지만) 횡단 관심사를..
npm install 과 npm ci 차이? 둘 다 의존성 패키지를 설치하는 명령어이다. 차이점은 기준이 되는 파일 npm install은 package.json을 기준으로 의존성을 설치한다. npm ci(clean install)은 package-lock.json을 기준으로 의존성을 설치한다. => 최종 빌드 시에 사용하면 good 위의 차이점을 알기 위해서는 Semantic versioning 개념에 대한 이해가 있어야 한다. Semantic versioning(SemVer) npm은 시멘틱 버저닝(SemVer)이란 버전 표기법을 따른다. - 이 시점에는 이 기능을 제공할 겁니다!라는 의미(버전 업이 된다면 새로운 기능을 제공(혹은 업데이트)할 거야) 이 개념을 알면 라이브러리의 상세를 보지 않더라도..
[진행 기간]: 23.06.26(월) ~ 30(금) [교육 내용] FE 개발자끼리의 협업을 위한 기본 세팅(환경 설정), 생산성을 높여주는 배포 자동화 등.. 서버와 클라우드 컴퓨팅 AWS 개념, CI/CD with GitHub Actions 5명 이상의 개발자끼리의 공유 리포, git 연습(best practice를 추합해서 main에 병합하는 식으로 진행) 서로 코드를 공유하고 best practice 선정하기 (어떤 코드가 좋을 지, 어떻게 더 개선할 수 있을 지, 스택 선정 사유 등) [느낀 점] 1. git CLI 및 컨벤션 프로젝트를 여러 번 진행했고 3명 이상의 FE 취준생들과 같이 github으로 작업을 했음에도 불구하고 막상 다시 브랜치를 분기해서 PR을 올리고 PR형식과 commit 형..
- Total
- Today
- Yesterday
- 프리온보딩 프론트엔드 챌린지 3월
- float 레이아웃
- 원티드 3월 프론트엔드 챌린지
- 원티드 프리온보딩 프론트엔드 챌린지 3일차
- ~ ^
- fs모듈 넥스트
- tilde caret
- text input pattern
- nvm경로 오류
- getServerSideProps
- 프리렌더링확인법
- 타입스크립트 장점
- 항해99추천비추천
- 틸드와 캐럿
- is()
- 항해99프론트
- Prittier
- 원티드 프리온보딩 FE 챌린지
- grid flex
- 타입스크립트 DT
- D 플래그
- aspect-ratio
- 형제 요소 선택자
- && 셸 명령어
- 원티드 FE 프리온보딩 챌린지
- nvm 설치순서
- 부트캠프항해
- getStaticPaths
- reactAPI
- 항해99프론트후기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |