728x90

Frontend/ReactJS 23

props 와 state

props와 state는 컴포넌트에서 사용하거나 변화에 따른 리랜더링 기준이 되는 데이터를 담고 있다는 점에서 비슷하다. 하지만 props는 부모 컴포넌트가 설정해서 자식 컴포넌트로 넘겨주는 값으로 자식 컴포넌트에서는 readOnly 인 반면 state는 컴포넌트 자체적으로 지닌 값으로 컴포넌트 내부에서 값을 마음대로 변경할 수 있다. 현재 리액트에서는 클래스형 컴포넌트보다 함수형 컴포넌트 작성이 권장되고 함수형 컴포넌트에서는 useState Hooks 를 통해 state 를 사용한다.

Frontend/ReactJS 2021.09.30

리덕스 사가를 통해 리덕스에 특정작업 주입하기

관련 코드는 아래를 참고 하도록 한다. github.com/mypiece/react-example mypiece/react-example CRA 리액트+리덕스+리덕스사가 예제. Contribute to mypiece/react-example development by creating an account on GitHub. github.com 먼저 리덕스를 왜 사용하는지 생각해보자. 리덕스 사가는 미들웨어의 한 종류이다. 참고로 미들웨어는 아래와 같은 의미를 가지고 있다. 운영 체제와 응용 소프트웨어의 중간에서 조정과 중개의 역할을 수행하는 소프트웨어 이를 토대로 리덕스 사가를 재해석해보면 리액트와 리덕스 사이에서 무언가 추가적인 작업을 해주는 것으로 이해하면 된다. 즉, 리덕스에 의해 상태가 변경되기 전..

Frontend/ReactJS 2021.03.11

리덕스를 통한 전역상태 관리

관련 코드는 아래를 참고 하도록 한다. github.com/mypiece/react-example mypiece/react-example CRA 리액트+리덕스+리덕스사가 예제. Contribute to mypiece/react-example development by creating an account on GitHub. github.com 리덕스의 개념 자체는 아래와 같이 그리 어렵지 않다. 상태 저장을 위한 스토어가 있고 컴포넌트에서는 여기에 있는 특정 상태를 구독한다. 초기상태와 이를 변경하는 액션타입을 미리 정의해놓고 이를 토대로 액션을 만들어줄 액션생성함수도 미리 만들어놓고 사용한다. 상태를 변경하기 위해 디스패치를 통해 액션 발생되면 리듀서에서는 이를 감지해서 상태를 업데이트 한다. 다만 이를..

Frontend/ReactJS 2021.03.11

리액트에서 크롬 개발자도구 연동

우선 크롬 웹 스토어 로 접속해서 React Developer Tools, Redux DevTools 를 브라우저에 설치한다. 설치를 완료하고 크롬 개발자모드(F12)를 확인하면 Redux, Components, Profiler 탭이 추가된 것을 볼 수 있다. 리액트는 단적으로 보면 결국 렌더링을 효율적으로 해주는 라이브러리이다. 이에 대부분의 전역적인 설정은 최초 렌더링을 시작하는 src/index.js 에서 해주면 된다. 이 중 크롬 개발자 도구와의 연동 설정을 하면 어플리케이션에서 사용되는 리덕스의 상태와 컴포넌트 렌더링 등의 주요정보를 디버깅 할 수 있다. 이를 위한 설정이 src/index.js 파일의 아래 내용이다. createStore를 통해 리덕스 상태를 보관할 스토어를 만드는데 compo..

Frontend/ReactJS 2021.03.11

리액트 초기 설정

1. 디버깅을 위한 크롬 브라우저 확장 프로그램 설치 크롬 웹 스토어 로 접속해서 React Developer Tools, Redux DevTools 를 브라우저에 설치한다. 설치를 완료하고 크롬 개발자모드(F12)를 확인하면 Redux, Components, Profiler 탭이 추가된 것을 볼 수 있다. Redux 탭에서는 어플리케이션에 적용된 Redux의 상태정보를 실시간으로 확인할 수 있다. Components 탭에서는 컴포넌트의 트리구조를 확인할 수 있다. Profiler 탭을 통해 프로파일링을 해볼 수 있다. 추가로 이벤트에 따라 리렌더링 되는 컴포넌트 영역을 실시간으로 확인하려면 아래 설정을 추가해 진행해야 한다. 위 설정을 하면 아래와 같이 리렌더링 되는 컴포넌트를 화면상에서 실시간으로 확..

Frontend/ReactJS 2021.03.08

React 라우팅 처리

관련 코드는 아래를 참고 하도록 한다. github.com/mypiece/react-example mypiece/react-example CRA 리액트+리덕스+리덕스사가 예제. Contribute to mypiece/react-example development by creating an account on GitHub. github.com src/index.js 파일에서 최상위 컴포넌트인 src/App.js 를 라우터 태그로 감싼다. src/App.js 에서는 실제 라우팅 설정을 한다. 태그로 url별 호출한 컴포넌트를 지정한다. path 는 위와 같이 배열형태로 여러개를 지정할 수도 있다. /, /page1 과 같이 경로가 겹치는 부분을 처리하기 위해 exact={true} 설정이 필요하다. 태그를 ..

Frontend/ReactJS 2021.03.08

State를 통한 컴포넌트 상태 관리

전체 코드는 아래를 참고 하도록 한다. github.com/mypiece/react-example mypiece/react-example CRA 리액트+리덕스+리덕스사가 예제. Contribute to mypiece/react-example development by creating an account on GitHub. github.com 리액트에서 상태를 관리하는 방법은 두가지가 있다. 전역적으로 관리가 필요하거나 상태를 관리하는 과정에서 api호출을 통해 외부데이터와 동기화 되어야 하는 경우에는 리덕스를 사용하고 컴포넌트 내부에서만 관리하면 되거나 외부데이터와 동기화가 필요없다면 State를 사용한다. 아래 Counter가 State를 이용해 상태관리를 한다. Counter.js 파일이 최종 렌더링..

Frontend/ReactJS 2021.03.08

리액트에서 상태관리가 필요한 이유

jQuery 라면 selector로 Element를 찾아서 직접 DOM을 조작해야 한다. 하지만 리액트는 실제 DOM 변경 전에 내부적으로 가상 DOM이라는 개념이 사용되기 때문에 직접적으로 DOM을 조작하지 않고 HTML과 비슷한 JSX 문법을 통해 View를 정의하되 특정 상태값에 따라 컴포넌트를 어떤식으로 렌더링할지 선언하는 방식이다. 이러한 상태와 컴포넌트는 옵저버 패턴처럼 연결되어 있어서 컴포넌트는 참조하는 상태값의 변화할때마다 자동으로 리렌더링 된다. 렌더링 과정에서 내부적으로 가상DOM 에 페이지 자체를 새로 만들고 실제 DOM 과 비교하여 변경된 부분만 적용한다. 리액트에서는 이를 위한 상태관리가 필요하다. 이러한 상태는 기본적으로 State 가 있는데 이는 컴포넌트 내부에서만 사용되는 상..

Frontend/ReactJS 2021.03.08

Hooks?

Hook의 복수형인 듯하고 Hook는 소프트웨어 공학에서 의미하는 Hooking 과 동일한 의미로 보면 될 거 같다. 참고로 Hooking은 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말한다. 간단하게 말해 특정동작을 보강하거나 변경하는 방법이다. Hooks는 리액트 v16.8에 새로 도입된 기능으로 함수형 컴포넌트에서도 상태를 관리할 수 있도록 도와준다. 리액트에서 기본적으로 제공하는 몇가지 Hooks 이 존재하고 우리는 이를 확장해서 커스텀훅으로 만들어서 활용할 수도 있다. 참고로 Hooks는 함수 내에서만 call 할 수 있다.

Frontend/ReactJS 2021.03.05
728x90