본문 바로가기

[ Programming ] Basic/React16

React Fragments React Fragments 리액트 v16.2부터 'Fragments' 기능을 지원합니다. 렌더링을 할 때 단일 요소만 다룰 수 있음로 불필요한 DOM을 삽입하는 경우가 많았습니다. 그러나 Fragments를 사용하면 여러 개의 요소를 직접 화면에 표시할 수 있습니다. React.Fragment로 감싼 부분은 DOM은 출력하지 않고 자식 요소만 렌더링합니다. 그럼 코드를 볼까요. 먼저 Fragment를 적용하지 않은 것을 작성하고, Fragment를 적용한 것을 작성하여 비교해보도록 하겠습니다. Fragment 적용하지 않은 컴포넌트 import React from 'react'; const Hello = () => { return ( Hello World ! );}; export default Hell.. 2020. 2. 24.
소스 코드 빌드 (Source Code Build) 소스 코드 빌드 빌드란 프로그램 소스 코드에 배포할 파일을 생성하거나 관련 문서를 생성하는 공정을 가리키는 단어 입니다. 패키지 소프트웨어나 게임 소프트웨어 등에서는 일반적인 공정입니다. 개발자가 직접 손을 대는 파일과 최종 사용자에게 사용하는 실제 파일은 다르므로 빌드 실행 후의 상태에서는 프로그램이 어떻게 동작하는지 알기 어려운 상태일 때가 대부분입니다. 최근 프론트앤드 개발에서는 당연한 듯 빌드 프로세스가 포함됩니다. 또한 빌드 환경이 자주 업데이트되기 때문에 "프론트앤드 개발의 흐름이 빠르다."로 여겨지기도 합니다. 그만큼 개발 환경이 성숙하지 않았음을 의미하며 발전시키고자 많은 개발자가 관여하는 세계라 할 수 있습니다. 아울러 항상 최신 정보를 확인하고 적용함으로써 개발 환경을 업데이트하며 개발.. 2020. 2. 22.
아토믹 디자인(Atomic Design) 아토믹 디자인(Atomic Design) 아토믹 디자인을 설명하기에 앞서... 구글(Google)이 '머터리얼 디자인(Material Design)'이라 불리는 디자인 가이드라인을 공개한 이후, 디자인을 언어화하여 그 법칙성을 시스템으로 운용하는 접근법이 웹 개발에 널리 퍼지게 되었습니다. 물론 이전에도 인터페이스를 패턴으로 다루는 방법과 관련한 많은 해설서가 있었습니다. 심지어 1970년대에도 넓은 의미의 디자인 영역 관련 서적은 있었습니다. 따라서 웹 사이트 제작에서도 '컴포넌트' 단위가 중요해졌으며, 이 때문에 리액트의 특징 중 하나인 '컴포넌트 기반(Component-Based)'에도 반영되었습니다. 이러한 흐름 가운데 웹 디자이너 브래드 프로스트(Brad Frost)는 '아토믹 디자인'을 주장했.. 2020. 2. 21.
[리액트(React) 학습자를 위한 기초지식] 컴포넌트 생명주기(Lifecycle of Components) - #3 Unmounting (3/3) 리액트(React) 학습자를 위한 기초지식컴포넌트 생명주기(Lifecycle of Components) - #3 Unmounting (출처: https://twitter.com/dan_abramov/status/981712092611989509) Unmounting 리액트 컴포넌트 생명주기의 마지막 단계인 Unmounting입니다. Unmounting은 컴포넌트를 DOM에서 제거할 때 발생합니다. 이 Unmounting 단계에서 호출되는 함수는 단 하나 입니다, componentWillUnmount() componentWillUnmount componentWillUnmount() 함수는 DOM에서 컴포넌트를 제거하려 할 때 호출됩니다. 컴포넌트를 제거할거면 그냥 컴포넌트 파일을 지우면 안되나 생각했지만,.. 2020. 2. 20.
[리액트(React) 학습자를 위한 기초지식] 컴포넌트 생명주기(Lifecycle of Components) - #2 Updating (2/3) 리액트(React) 학습자를 위한 기초지식컴포넌트 생명주기(Lifecycle of Components) - #2 Updating (2/3) (출처: https://twitter.com/dan_abramov/status/981712092611989509) Updating 리액트 컴포넌트 생명주기의 첫번째 단계인 Mounting 단계를 거치면 Updating 단계로 들어갑니다. Updating은 Mounting과정을 거쳐 DOM을 형성한 컴포넌트에 state값이나 props값을 변경할 때 발생합니다. 지난글인 [컴포넌트 생명주기 - #1 Mounting]에서 예시로 적어둔 것 처럼, componentDidMount() 함수를 이용해 state값을 변경했습니다. 이미 DOM을 형성한 컴포넌트에 state값을 .. 2020. 2. 19.
[리액트(React) 학습자를 위한 기초지식] 컴포넌트 생명주기(Lifecycle of Components) - #1 Mounting (1/3) 리액트(React) 학습자를 위한 기초지식컴포넌트 생명주기(Lifecycle of Components) - #1 Mounting (1/3) 리액트 컴포넌트에는 생명주기가 있습니다. 컴포넌트의 생명주기라 함은 컴포넌트가 처음으로 import되어 DOM을 형성하는 단계, 형성된 컴포넌트 내부를 수정하는 단계, 마지막으로 컴포넌트를 사용하지 않겠다고 선언하는 단계로 말 그대로 컴포넌트가 탄생하여 소멸되기까지 일련의 과정입니다. 이러한 생명주기 안에서는 특정 시점에서 자동으로 호출되는 생명주기와 관련된 함수들이 있습니다. 그리고 컴포넌트가 실행될 때, 이 함수들은 정해진 순서에 따라 실행이 됩니다. 이를 통해 리액트 컴포넌트를 보다 더 심층적으로 다룰 수 있습니다. 생명주기는 크게 3단계로 나누어집니다. Mou.. 2020. 2. 10.
[리액트(React) 학습자를 위한 기초지식] 반복문, 리스트를 위한 Key 설정 리액트(React) 학습에 필요한 기초지식반복문, 리스트를 위한 Key 설정 Key는 웹 브라우저 화면에서 보이지 않는, 그래서 DOM이 그려주는 화면 표시와는 관계없는 요소입니다. 하지만 제대로 된 리액트 컴포넌트를 작성하기 위해 중요한 요소입니다. 리액트는 앞에서 설명한 Props나 State만 컨트롤하여, 실제로 변경이 발생한 표시 요소만 다시 화면에 나타내는 기능이 라이브러리로 준비되어 있습니다. 이때 Key의 역할은 다시 화면을 표시할 때 쓸데없는 동작을 최소화하여 성능 저하를 방지하는데 있습니다. Key를 이해하려면 반복 처리로 리스트를 표시하는 UI를 보면 알기 쉬우므로 리스트 화면 표시를 예로 설명하겠습니다. //배열 형태의 데이터const animal = [ 'Tiger', 'Lion',.. 2020. 2. 9.
[리액트(React) 학습자를 위한 기초지식] Props&State - #3 State로 이벤트 작성 리액트(React) 학습에 필요한 사전지식Props&State - #3 state로 이벤트 작성 이벤트는 사용자가 웹 브라우저에서 어떠한 동작이나 행동을 하는 것을 의미합니다. 예를 들면 스크롤을 움직이거나, 마우스 포인터를 움직이거나, 버튼을 누르는 동작이 있습니다. 리액트에서는 JSX로 이벤트를 비교적 쉽게 구현할 수 있습니다. 이벤트를 구현하고 싶은 태그에 on*** 형식으로 원하는 이벤트를 작성하면 됩니다. on 다음에 나오는 이벤트명 첫 스펠링은 대문자로 해주어야 합니다. 간단하게 이벤트 코드를 작성하겠습니다. SampleButton.js import React, { Component } from 'react'; class SampleButton extends Component { handleC.. 2020. 2. 8.
[리액트(React) 학습자를 위한 기초지식] Props&State - #2 State 리액트(React) 학습에 필요한 사전지식Props&State - #2 state 이전글인 (Props&State - #1 Props)에서 설명한 바에 따르면, Props는 데이터를 전달받는 역할을 합니다. 예제 컴포넌트를 생성해볼게요. LightSwitch.js import React, { Component } from 'react'; class LightSwitch extends Component { constructor(props) { super(props); this.state = { power: false, } } render() { return ( SWITCH {this.state.power ? 'ON' : 'OFF'} ); }} export default LightSwitch; constru.. 2020. 2. 7.