React recoiljs 알아보기

최근 react 에서 새로운 상태관리 라이브러리를 발표했다. 주요 컨셉으로는 atom,selector 라는 단위를 통해
derived state 를 효과적으로 처리하고 상태의 코드 분할이 가능하게 한다고 한다.

리액트의 기본 설정은 create-react-app 을 사용하려고 한다. react-app 생성 후 recoiljs 를 설치해주면
사용 준비가 끝난것이다.

script
1
npm i recoil
자세히 보기

리액트 Hooks: 3. 사용방법2

useReducer

redux와 같이 action을 사용하여 useState보다 다양하게 state 를 조작할수 있게 해준다.

harmony
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
31
32
33
34
35
36
37
38
39
40
41
import React, { useReducer } from "react";

const reducer = (state, action) => {
switch (action.type) {
case "INCREMENT":
return { ...state, count: state.count + 1 };
case "DECREMENT":
return { ...state, count: state.count - 1 };
case "HANDLE_CHANGE":
return { ...state, [action.target.name]: action.target.value };
default:
return state;
}
};


const CountReducer = () => {
const [state, dispatch] = useReducer(reducer, {
count: 0,
name: "",
nickname: ""
});

const handleChange = e => {
dispatch({ type: "HANDLE_CHANGE", target: e.target });
};

return (
<div>
<p>current count: {state.count}</p>
<button onClick={() => dispatch({ type: "INCREMENT" })}>increase</button>
<button onClick={() => dispatch({ type: "DECREMENT" })}>decrease</button>
<div>
<input name="name" value={state.name} onChange={handleChange} />
<input name="name" value={state.nickname} onChange={handleChange} />
</div>
</div>
);
};

export default CountReducer;
자세히 보기

리액트 Hooks: 2. 사용방법1

useState

사용방법

useState 는 이름에서 유추하는것과 같이 함수형 컴포넌트에서도 state를 사용할 수 있게 해준다.

사용방법은 해당 기능을 import 한 후 [state 이름, state이름을 변경시켜줄 setState와 같은 이름] = useState(초기값) 이다.

자세히 보기

리액트 Hooks: 1. hooks 란?

리액트 16.8 버전에서 Hooks 라는 새로운 기능이 추가 되었다.
해당 기능은 간단히 설명하자면 기존 리액트 component 에서 state 와 라이프 사이클을 사용하려면 class 로 component 를 생성해야 했다.
이말은 즉, 함수형 component 에서는 props 를 받아 사용할 수 있지만, state와 라이프 사이클을 사용할 수 없었다.

자세히 보기

리액트 라이프사이클

React를 사용하기 전 라이프사이클에 대해 확실하게 알고 사용하는 것이 좋다.
라이프사이클 이란 DOM이 그려지기 전후, DOM 상태가 변경되기 전후에 따라 실행되는 method 이며 상황에 맞는 action 을 취하게 해준다.
github에 예제 코드를 보면서 해당 글을 읽으면 도움이 될 수 있으며 clone 받아 직접 테스트 해볼 수도 있다.code 보기

자세히 보기
You need to set client_id and slot_id to show this AD unit. Please set it in _config.yml.