전체 글 28

[React] React의 메모이제이션 - useMemo(), useCallback(), React.memo

React에서는 렌더링 시 발생되는 필요없는 작업들을 줄이기 위해 다양한 최적화 도구를 제공한다. 그 중 React의 메모이제이션을 도와주는 대표적인 도구가 useMemo(), useCallback(), React.memo이다.각각 메모이제이션하는 값이 다른데, 순서대로 이를 정리해보고자 한다. useMemo()우선 useMemo는 비용이 큰 연산에 대한 결과를 저장해 두고, 이 저장된 값을 반환하는 훅이다. 가장 흔하게 사용이 되는데, 첫 번째 인수로는 어떠한 값을 반환하는 생성 함수를, 두 번째 인수로는 해당 함수가 의존하는 값의 배열을 전달한다. useMemo는 렌더링 발생 시 의존성 배열의 값이 변경됐을 때만 함수를 재실행한다. 그리고 함수의 반환값을 저장한다. 이러한 useMemo의 메모이제이션..

React 2025.02.19

[React] JSX 문법과 컴포넌트들 알아보기

React의 JSX 문법이란?JSX는 리액트를 사용하면서 처음 접하게 된다. JSX를 사용하면 JS 문법을 마치 HTTP 태그처럼 사용할 수 있는데, 이는 페이스북(현 메타)에서 소개한 문법이다. JSX는 ECMAScript의 일부가 아니기 때문에, 꼭 트랜스파일링 도구를 사용해 트랜스파일을 거쳐야 자바스크립트로 변환되어 자바스크립트 엔진이 이해할 수 있다. JSX는 기본적으로 JSXElement, JSXAttributes, JSXChildren, JSXStrings라는 4가지 컴포넌트를 기반으로 이루어져있다고 한다.JSXElementJSXElement는 HTML의 element와 비슷한 역할을 하는데,  다음과 같은 세 형태로 사용할 수 있다. 이때 빈 태그는 JSXFragment라고 부른다. 그..

React 2025.02.18

[JavaScript] 자바스크립트 클로저란?

만약에 면접에서 '클로저란 무엇인가요?' 라는 질문이 온다면, 뭐라고 답할까?최근 프론트엔드 스터디를 하게 되면서, 면접용 대답과 실제 개념을 정리하고 발표하고 이를 깃북에 올려 공유하게 되었다. 이러한 작업이 많은 프론트엔드 개발자들에게 도움이 되었으면 하는 바람이다.앞으로 이런 글이 깃북과 깃허브에 계속 올라갈 예정이니, 필요한 분들은 star를 눌러주시면 감사하겠습니다 ! 😇 FE-Tech-Interview | FE-CITYR0CK[JavaScript] 클래스형 컴포넌트와 함수형 컴포넌트의 차이는 무엇일까요?fe-cityr0ck.gitbook.io GitHub - FE-CITYR0CK/FE-Tech-InterviewContribute to FE-CITYR0CK/FE-Tech-Interview de..

frontend 2025.02.07

[React] SSR을 위한 리액트 API

velog에 적었던 글들을 차근차근 tistory로 옮길 예정입니다. [react] SSR을 위한 리액트 API리액트는 브라우저 자바스크립트 환경에서 렌더링 할 수 있는 방법을 제공하지만 동시에 리액트 애플리케이션을 서버에서 렌더링할 수 있는 API도 제공한다.API는 서버에서 렌더링하기 위한 다velog.io  리액트 API리액트는 브라우저 자바스크립트 환경에서 렌더링 할 수 있는 방법을 제공하지만 동시에 리액트 애플리케이션을 서버에서 렌더링할 수 있는 API도 제공한다.API는 서버에서 렌더링하기 위한 다양한 메서드를 제공하는데, 이는server.node.js에 있는 함수를 export한 것이다. 대표 함수들renderToString-> 인수로 넘겨받은 리액트 컴포넌트를 HTML 문자열로 반환-> 서..

React 2024.11.01

[JavaScript] task queue와 micro task queue

velog에 적었던 글들을 차근차근 tistory로 옮길 예정입니다. [react] task queue 와 micro task queue'모던 리액트 Deep Dive'를 읽고!기본적으로 자바스크립트는 싱글 스레드를 가지고 있어 한번에 여러 일을 처리하기 어렵다. 즉, 비동기 처리가 어렵다. (멀티 스레드를 사용하면 같은 메모리를 이velog.io  '모던 리액트 Deep Dive'를 읽다가 정리한 글.기본적으로 자바스크립트는 싱글 스레드를 가지고 있어 한번에 여러 일을 처리하기 어렵다. 즉, 비동기 처리가 어렵다. (멀티 스레드를 사용하면 같은 메모리를 이용해 여러가지 일을 동시에 처리할 수 있다. 하지만 이는 같은 메모리를 이용하기 때문에 동시에 같은 자원에 접근할 시 DOM 표시에 문제를 일으킬 수..

frontend 2024.11.01

[React-native][iOS] app store 언어 한국어 설정

velog에 적었던 글들을 차근차근 tistory로 옮길 예정입니다. [react-native] app store 언어 한국어 설정처음 앱 출시를 하게 되면서 승인을 기다리고, 여러번 반려당하고, 드디어 출시를 하게 됐는데...! 앱 언어가 영어로 설정되어있었다.처음 출시하다보니 이를 빌드할때 따로 설정해줘야하는지velog.io   처음 앱 출시를 하게 되면서 승인을 기다리고, 여러번 반려당하고, 승인되어 출시할 수 있게 되었다.출시하고 기쁜마음으로 확인해보니, 앱 언어가 영어로 설정되어 있었다.처음 출시하다보니 이를 빌드할때 따로 설정해줘야하는지 몰라서 그랬던 거라, 급하게 수정해서 다시 빌드 후 다시 심사받고 재출시를 해야했다.앱 언어 설정은 간단하게, Info.plist파일에서 Localizatio..

React-Native 2024.11.01

[error] error 🚫 Command CodeSign failed with a nonzero exit code

velog에 적었던 글들을 차근차근 tistory로 옮길 예정입니다. [xcode 오류] error 🚫 Command CodeSign failed with a nonzero exit code모든 경우가 같진 않겠지만 처음 이 오류가 발생한건 flutter 프로젝트를 하던 중 flutter run을 했을 때이다. 원래는 잘 실행됐었지만 갑자기 이유없이 flutter run도 불가능해지고, 심지어 xcode로 buildvelog.io xcode 오류 모든 경우가 같진 않겠지만 처음 이 오류가 발생한건 flutter 프로젝트를 하던 중 flutter run을 했을 때이다. 원래는 잘 실행됐었지만 갑자기 이유없이 flutter run이 불가능해졌고, 심지어 xcode로 build하려고 할때마다 sign key..

error 2024.10.16

[React-Native][iOS] react-native-iap 간단하게 인앱결제 복원하기 구현

velog에 적었던 글들을 차근차근 tistory로 옮길 예정입니다. [react-native][IOS]react-native-iap 간단하게 인앱결제 복원하기 구현안드로이드의 경우에는 앱을 삭제했다가 다시 설치해도 구매했던 구독을 자동으로 불러와 적용해주지만, IOS는 자동으로 복원되지 않기 때문에 복원하기 버튼을 만들고 이를 구현해줘야한다.velog.io  iOS 인앱결제 복원하기  안드로이드의 경우에는 앱을 삭제했다가 다시 설치해도 구매했던 구독을 자동으로 불러와 적용해주지만, iOS는 자동으로 복원되지 않기 때문에 인앱결제가 있을 경우에는 복원하기 버튼을 필수로 구현해줘야한다. (구현하지 않으면 앱스토어 심사에서 반려된다.)현재 개발 중인 앱의 경우에는 프리미엄 구독 기능이라는 인앱결제가 있기 때..

React-Native 2024.10.15

[frontend] 모노레포와 프론트엔드의 마이크로 아키텍쳐

동아리 홈페이지 리팩토링을 진행하면서, 기존 코드를 통해 하나의 레포지토리에 홈페이지와 어드민 페이지를 모두 두고 관리하게 되었다.  그리고 이 과정에서 모노레포가 무엇인지 알게되었고, 이를 정리해보고자 한다. 모노레포란?위의 예시처럼 두개 이상의 프로젝트를 하나의 레포지토리에서 관리하는 소프트웨어 전략이라고 한다.  이는 기존 프론트엔드 전략에서 많이 쓰이던 '모놀리식 서비스 아키텍쳐'의 단점을 보완하기 위해 만들어졌다. '멀티레포'는 모노레포와 반대로 기존에 주로 쓰이던 전략이다. 여러 개의 레포를 사용하여 팀별, 혹은 프로젝트 별로 나누어 레포를 생성하고 개발한다. 보통 프로젝트 별로 완전히 분리되어 서로 영향을 주는 경우는 없지만, 실무에서는 영향을 주기도 한다고 한다.  이 이미지를 확인하면 명..

frontend 2024.10.14

[React-Native][Android] 안드로이드 인앱 결제 시 결제 테스트 라이선스 등록

velog에 적었던 글들을 차근차근 tistory로 옮길 예정입니다. [react-native][android]안드로이드 인앱 결제 시 결제 테스트 라이선스 등록안드로이드 인앱 결제 테스트 중 ‘이 버전의 application에서는 google play를 통한 결제를 할 수 없습니다’라는 오류를 받았다. 찾아보니 이는 이것은 해당 빌드 버전과 콘솔에 등록된 버전이 다를velog.io  라이선스 테스트 등록 안드로이드 인앱 결제 테스트 중 ‘이 버전의 application에서는 google play를 통한 결제를 할 수 없습니다’라는 오류를 받았다. 찾아보니 이는 이것은 해당 빌드 버전과 콘솔에 등록된 버전이 다를 경우나, 인앱 상품만 등록하고 라이선스 테스터 등록이 안됐을 때 나오는 오류라고 한다.라이선..

React-Native 2024.10.12