React

65 posts

Material UI의 Container, Grid 컴포넌트

웹페이지의 레이아웃을 잡을 때 컨텐츠를 화면 중앙에 위치시키기나 격자로 배치해야 할 때가 많이 있습니다. Material UI의 <Container/>와 <Grid/> 컴포넌트를 사용하면 이러한 웹페이지 레이아웃을 매우 쉽고 간단하게 잡을 수 있습니다. Material UI의 기본적인 셋업에 대한 부분은 관련 포스팅를 참고 바랍니다. Container 컴포넌트 <Container/> 컴포넌트는 컨텐츠를 좌우에 적당한 간격을 두고 화면 중앙에 위치시킬 때 사용합니다. 최대 너비만을 제한하는 fluid 모드와 항상 동일한 너비를 강제하

Material UI의 Paper, Card 컴포넌트

웹페이지의 UI를 구현하다 보면 서로 관련이 있는 여러 개의 컴포넌트를 시각적으로 하나의 그룹처럼 묶어주는 컴포넌트가 필요합니다. 이렇게 관련된 여러 컴포넌트를 보기 쉽게 도와주는 Material UI의 <Paper/>와 <Card/> 컴포넌트에 대해서 알아보겠습니다. Material UI의 기본적인 셋업에 대한 부분은 관련 포스팅를 참고 바랍니다. Paper 컴포넌트 먼저 살펴볼 <Paper/> 컴포넌트는 마치 포스팅잇처럼 화면에서 도드라져 보이는 효과를 제공합니다. elevation, outlined 이렇게 2가지 형태를 사용할

Material UI의 TextField 컴포넌트

사용자로 부터 정보를 입력 받는 양식(form) UI의 경우 <input/> 또는 <select/>, <textarea/>와 같은 HTML 엘리먼트가 많이 사용됩니다. 이러한 입력 엘리먼트는 브라우저마다 다른 스타일로 표현되고, 기본 스타일은 그대로 사용하기에는 너무 단조롭기 때문에 CSS를 이용해서 커스텀 스타일을 해주는 것이 일반적일 것입니다. Material UI는 이러한 입력 엘리먼트를 이미 예쁘게 디자인된 React 컴포넌트 형태로 제공을 해주기 때문에 우리는 그냥 편리하게 갔다 쓰기만 하면 됩니다. 이번 포스팅에서는 Ma

Material UI의 버튼 컴포넌트

React 앱을 개발할 때 Material UI와 같은 컴포넌트 라이브러리를 사용하는 이유 중 하나는 버튼과 같이 너무 기본적인 컴포넌트를 직접 구현하는데 들어가는 시간과 노력을 절약하기 위함일 것입니다. 일반적으로 버튼은 UI에서 사용자의 명령을 받아드리는 창구 역할을 하고, 여러 페이지에 거쳐서 다양한 형태로 사용됩니다. 따라서 단순히 사용자 경험 뿐만 아니라 해당 서비스의 전체적인 브랜드 이미지에도 큰 영향을 줄 수 있습니다. 이번 포스팅에서는 이렇게 생각보다 상당히 중요할 수 있는 버튼을 Material UI에서 제공하는 <

Material UI 아이콘 사용하기

지난 포스팅에서는 Material UI의 <Typography/> 컴포넌트를 사용하여 텍스트를 표현하는 방법에 대해서 알아보았습니다. 이번 포스팅에서는 텍스트와 더불어 UI에서 감초같은 역할을 하는 아이콘을 Material UI에서 어떻게 사용할 수 있는지 알아보도록 하겠습니다. Material UI의 기본적인 셋업에 대한 부분은 관련 포스팅를 참고 바랍니다. Material Icons Material UI는 @material-ui/icons 패키지를 통해서 1,000 여종의 SVG 아이콘을 제공하고 있습니다. 그래서 아이콘을 엄청

Material UI 소개 및 Typography 컴포넌트 사용법

Material UI는 현재 가장 많이 쓰이고 있는 React UI 컴포넌트 라이브러리 중에 하나입니다. 많은 React UI 컴포넌트 라이브러리는 기존에 있는 CSS 라이브러리를 기반으로 만들어지는 경우가 많습니다. React Bootstrap이 대표적인 예인데요. 이러한 React 라이브러리는 근간이 되는 CSS 라이브러리에 대한 이해나 경험이 없는 경우 여러모로 사용하기 불편한 경우가 많습니다. 하지만 Material UI는 여타 React UI 컴포넌트 라이브러리와 달리 처음부터 React로 만들어졌기 때문에 많은 개발자들에

[GraphQL] React Apollo로 Subscription 호출

Subscription GraphQL에는 query와 mutation 그리고 subscription 이렇게 총 3가지 operation type이 있습니다. 이 중에 query는 데이터 조회를 위해서 필수적으로 사용되고, mutation은 데이터 변경을 위해서 많이 사용되고 있습니다. query와 mutation 대비 다소 생소한 subscription은 주로 실시간(real-time) 애플리케이션을 구현하기 위해서 사용되는데요. subscription도 기본적으로 query처럼 데이터를 조회를 위해서 사용되지만 작동 방식에서 큰

Storybook 소개 / 기본 사용법

Storybook이란? 스토리북(Storybook)은 한 문장으로 정의가 어려울 정도로 다양한 방식으로 사용되고 있는 UI 컴포넌트 개발 도구입니다. 단순히 회사의 UI 라이브러리를 내부 개발자들을 위해 문서화(documentation)하기 위해서 사용할 수 있고, 외부 공개용 디자인 시스템(Design System)을 개발하기 위한 기본 플랫폼으로도 사용할 수 있습니다. 스토리북(Storybook)을 기본 구성 단위는 스토리(Story)이며 하나의 UI 컴포넌트는 보통 하나 이상의 Story를 가지게 됩니다. 각 Story는 해당

구글 OpenID Connect 사용법

최근에는 아이디와 비밀번호 입력없이도 구글이나 페이스북과 같은 대형 플랫폼을 통해서 로그인 할 수 있는 서비스들을 많이 볼 수 있습니다. 이번 포스팅에서는 이렇게 사용자 인증을 다른 서비스에 위임하기 위해서 사용되는 프로토콜인 OpenID Connect에 대해서 알아보겠습니다. OpenID Connect란? 예전에는 사용자 데이터를 서비스에서 직접 관리하는 경우가 많았지만, 개인 정보가 유출되는 보안 사고가 잇달아 발생함에 따라, 요즘에는 사용자 데이터를 자체적으로 보관하는 것 자체가 부담스러운 작업이 되어가고 있습니다. 이 때문에

OAuth 2.0으로 구글 API 호출하기

검색과 지메일, 연락처, 캘린더, 드라이브, 포토, 유튜브 등 우리는 거의 매일 구글의 서비스를 이용하면서 살고 있다고 해도 과언이 아니죠? 구글은 이렇게 다양한 제품에 걸쳐서 관리되고 있는 데이터를 사용자의 허락을 받고 접근할 수 있도록 Google APIs를 제공하고 있는데요. 이번 글에서는 OAuth 2.0을 통해 사용자의 동의를 구하고 구글 API를 호출하는 방법에 대해서 알아보겠습니다. OAuth 2.0이란? 먼저 OAuth 2.0이 생소하신 분을 위해서, 과연 OAuth 2.0가 무엇인지 간단하게 개념부터 짚고 가겠습니다

React Hooks: useMemo 사용법

React Hooks 중 하나인 useMemo 함수를 왜/언제/어떻게 써야하는지 알아보겠습니다. Memoization useMemo 함수에 대해서 알아보기 전에 알고리즘 시간에 자주 나오는 메모이제이션(memoization) 개념에 대해서 잠깐 짚고 넘어가겠습니다. memoization이란 기존에 수행한 연산의 결과값을 어딘가에 저장해두고 동일한 입력이 들어오면 재활용하는 프로그래밍 기법을 말합니다. memoization을 절적히 적용하면 중복 연산을 피할 수 있기 때문에 메모리를 조금 더 쓰더라도 애플리케이션의 성능을 최적화할 수

React Router로 사용자 인증하기 (로그인/로그아웃)

지난 두 개의 포스팅에 걸쳐서 React Router를 이용해서 React 앱에서 라우팅을 하는 방법을 알아보았습니다. React Router로 라우팅 하기 React Router로 중첩 라우팅 하기 이번 포스팅에서는 그 동안 배운 라우팅 방법을 기반으로 React 앱에서 어떻게 React Router를 이용해서 사용자 인증을 구현할 수 있는지 살펴보도록 하겠습니다. 인증이 필요없는 컴포넌트 로그인 하기 전까지는 모든 기능을 차단하는 앱이 있지만, 더 많은 경우에는, 인증없이도 접근 가능한 영역이 있기 마련입니다. 예를 들어, 홈페

[GraphQL/React] Apollo Hooks로 React 앱 개발하기

지난 포스팅에서는 Apollo Hooks라는 새로운 방법을 통해 React 앱에서 어떻게 GraphQL API를 호출할 수 있는지 간단히 살펴보았습니다. 이번 포스팅에서는 지난 포스팅에서 다뤘던 useQuery() 함수 뿐만 아니라 useMuation() 함수까지 사용해서 간단한 노트(Note) 앱을 React로 작성해보도록 하겠습니다. Apollo Hooks가 생소하신 분들은 아래 포스팅를 통해 먼저 기본 개념을 잡으시고 이 포스팅로 돌아오시기를 추천드립니다. [GraphQL/React] Apollo Hooks 소개/사용법 기존에

[GraphQL/React] Apollo Hooks 소개/사용법

지난 달, Apollo Client에서 공개되어 현재 뜨거운 반응을 얻고 있는 Apollo Hooks에 대해서 알아보겠습니다. Apollo Client가 생소하신 분들은 아래 포스팅를 먼저 보시고 이 포스팅로 돌아오시는 것을 추천드립니다. [GraphQL] Apollo Client 사용법 Apollo Hooks? Apollo Hooks는 Apollo Client로 React 앱을 개발할 때, GraphQL API를 호출할 수 있는 새로운 방법입니다. 기존에는 react-apollo 패키지에서 제공하는 <Query/>나 <Mutati

React Router로 중첩 라우팅 하기

지난 포스팅에서 React Router로 기본적인 라우팅 방법을 다루었습니다. 이번 포스팅에서는 React Router로 중첩 라우팅을 구현하는 방법에 대해서 알아보겠습니다. 중첩 라우팅이란? 중첩 라우팅(Nested Routing)이란 라우팅 맵핑을 최상위 컴포넌트 뿐만 아니라 여러 개의 컴포넌트에 걸쳐서 단계별로 정의하는 라우팅 기법입니다. 예를 들어, 브라우저의 주소 창에 https://www.your-site.com/users라고 입력되었을 때, 유저 목록 페이지가 표시되고, https://www.your-site.com/a

PropTypes로 React 입력 타입 체크하기

PropTypes는 React에서 타입 체크를 위해서 사용되는 라이브러리입니다. 이 번 포스팅에서는 PropTypes를 이용해서 React 컴포넌트의 prop에 대한 타입 정의와 기본값 설정을 하는 방법에 대해서 알아보겠습니다. 패키지 설치 PropTypes 라이브러리는 prop-types이라는 패키지 이름을 가지고 있는데요. 기본적으로 react 패키지에 내장이 되어 있기 때문에, React만 설치되어 있다면 별도로 설치할 필요가 없습니다. 예제 컴포넌트 PropTypes를 어떻게 사용하는지 보여드리기 위해서 먼저 예제 컴포넌트를

Styled Components로 React 컴포넌트 스타일하기

지난 포스팅에서 외부 라이브러리 없이 CSS 만으로 React 컴포넌트를 스타일링하는 방법을 알아보았습니다. 이번 포스팅에서는 대표적인 CSS-in-JS 라이브러리인 Styled Components를 사용해서 React 컴포넌트를 스타일링하는 방법을 살펴보겠습니다. CSS in JS? 먼저 CSS in JS의 개념을 짚고 넘어가겠습니다. CSS in JS는 스타일 정의를 CSS 파일이 아닌 JavaScript로 작성된 컴포넌트에 바로 삽입하는 스타일 기법입니다. 기존에 웹사이트를 개발할 때는 HTML과 CSS, JavaScript는

[GraphQL] Apollo Client로 React 앱 개발하기

Apollo Client는 GrpahQL API를 호출하기 위해 사용되는 라이브러리입니다. 이번 포스팅에서는 React 앱에서 Apollo Client를 사용하여 GraphQL API를 호출하는 방법에 대해서 알아보겠습니다. 사실, GraphQL API를 호출할 때, 반드시 Apollo Client와 같은 전용 클라이언트가 필요한 것은 아닙니다. GraphQL API를 별다른 라이브러리 없이 최대한 간단하게 호출하는 방법에 대해서는 아래에 따로 포스팅해놓았으니 참고바랍니다. 관련 포스팅: GraphQL API 간단하게 호출하기 그리

React 컴포넌트 CSS 스타일링 기본

React 공식 레퍼런스에 따르면 React에서는 명확한 스타일링 가이드를 제공하지 않는데요. React does not have an opinion about how styles are defined. 그도 그럴 것이 현재 CSS 기술 자체가 사용되는 방식이 워낙 다양하기 때문에 React에서 꼭 찝어 어느 방식을 따르라고 얘기하기가 조심스러울 것입니다. 그래서 이번 포스팅에서는 React 컴포넌트를 별도의 CSS-in-JS 라이브러리 없이 순수하게 CSS로만 스타일하는 가장 기본적인 방법을 알아보겠습니다. Inline Style

React Testing Library 사용법

Testing Library는 웹 프론트엔드 테스트에서 사실 상 표준으로 자리잡은 라이브러리입니다. React 뿐만 아니라 Vue, Svelte, Angular 등 거의 대부분의 자바스크립트 프레임워크를 지원하고 있죠. 이번 포스팅에서는 Testing Library를 사용해서 React 컴포넌트에 대한 테스트 코드를 어떻게 작성하는지 함께 알아보겠습니다. React Testing Library 소개 React Testing Library는 Behavior Driven Test(행위 주도 테스트) 방법론이 대두 되면서 함께 주목 받기

Discord